Betrachten Sie eine Seite, welche Unterklassen WebPage
. Sein Konstruktor erzeugt und fügt eine WebMarkupContainer
hinzu, die eine ListView
Komponente enthält, die von einer LoadableDetachableModel
unterstützt wird.ListView von Wicket Page LoadableDetachableModel wird über AJAX-Aufruf geändert. Seite nicht neu zeichnen
Die Seite fügt auch zwei Instanzen von anonymen Unterklassen von AbstractDefaultAjaxBehavior
hinzu [jeweils überschreiben die Klasse 'renderHead
und Methoden].
Die entsprechende HTML enthält ein <div>
von wicket:id
an die WMC gebunden und ein <table>
mit <tr>
‚s an die ListView
Komponente ListItems
gebunden.
Die Seite wird beim ersten Mal korrekt angezeigt.
Basierend auf der Benutzerinteraktion mit dem Client legt die betreffende AbstractDefaultAjaxBehavior
Informationen zum Modellobjekt des Modells fest. Die Information soll verwendet werden, um die Art und Weise zu ändern, in der ein bestimmter listitem
als <td>
innerhalb der Zeile in der Tabelle erscheint - insbesondere sollte der Text einer ausgewählten Zeile in Fettdruck angezeigt werden.
Diagnose Debugger-Breakpoints und System.out
Informationen auf beiden Seiten der den AJAX-Aufruf zu bestätigen, dass das respond
Methode des Verhaltens korrekt aufgerufen wird, und dass das Modellobjekt korrekt geändert wird.
Die Seite wird nie automatisch neu gezeichnet.Manuelles erneutes Laden der Seite aus dem Browser zeigt korrektes Verhalten.
ich dieses Problem und fand eine Vielzahl von möglicherweise im Zusammenhang Lösungen erforscht habe, die ich versucht habe, einschließlich
target.add(webMarkupContainer);
aus dem Verhalten desrespond
Methode in Verbindung mit Aufruf
Aufruf
target.appendJavaScript("window.location.reload();");
von der Methode.setResponsePage(this);
Aufruf,setResponsePage(Page.class);
undsetResponsePage(getPage());
vomrespond
Verfahren sowie von einer außer Kraft gesetztonBeforeRender
Methode auf der Seite.
Irgendwelche Vorschläge?
Ich habe beide, in verschiedenen Kombinationen, erfolglos. Ich folgte Ihrem Lead re 'AbstractDefaultAjaxBehavior' und überarbeitete die Implementierung für das problematische Ereignis als 'AjaxEventBehavior', was jetzt funktioniert. Danke für den Tipp - ich nehme an, dass ich diesen nützlichen Teil irgendwo auf dem Weg vermisst habe.Wenn es jemandem nichts ausmacht, können sie mich auf relevante Referenzinformationen verweisen, wo die nicht aktualisierende Natur der abstrakten Klasse beschrieben wird. Danke noch einmal. –