2013-10-08 1 views
7

Ich habe ein Ajax-Ereignis, das das Neuzeichnen verschiedener Wicket-Panels auslöst. Einige Panels haben zusätzliche eigene Berechnungen in ihrer onBeforeRender() -Methode. Wenn ein Fehler auftritt, möchte ich ihn dem Benutzer anzeigen. Aber ich kann das FeedbackPanel nicht zu AjaxRequestTarget hinzufügen, da ich innerhalb des neu gezeichneten Panels nicht mehr darauf zugreifen kann.Wie erhalten Sie das AjaxRequestTarget in Wickets OnBeforeRender() -Methode einer Komponente?

Gibt es eine Möglichkeit, das AjaxRequestTarget onBeforeRender() einer Wicket-Komponente zu erhalten? Ist es sogar möglich, zusätzliche Komponenten zum Ajax-Ziel hinzuzufügen, wenn die ersten bereits im onBeforeRender() -Zustand sind?

Gibt es eine bessere Möglichkeit, das FeedbackPanel dem Ajax-Ziel hinzuzufügen, wenn nur die Panels, die neu gezeichnet werden müssen, entscheiden können, ob ein Fehler vorliegt oder nicht?

+1

Ich weiß nicht, was Ihre App tut, aber ich bezweifle, dass Business Logik Berechnung auf 'onBeforeRender()' ist eine gute Idee. –

+0

Es gab eine statische ['AjaxRequestTarget.get()'] (http://wicket.apache.org/apidocs/1.4/org/apache/wicket/ajax/AjaxRequestTarget.html#get()) Methode zurück in Wicket 1.4 (scheint in Wicket 6 verschwunden zu sein). Wie Robert bereits betont hat, sollten Validierungslogik und mehr Fehlerberichterstattung jedoch nicht in 'onBeforeRender()' behandelt werden. –

Antwort

10

Erste der AjaxTarget wird folgendermaßen gemacht:

AjaxRequestTarget target = requestCycle.find(AjaxRequestTarget.class); 

Leider, wie erwartet, kann ich nicht hinzufügen, Komponenten an das Ziel, sobald ich in der Rendering-Phase bin. Aber Wicket bietet die Schnittstelle ITargetRespondListener mit der Methode onTargetRespond(AjaxRequestTarget target). Hier kann ich alles, was ich möchte, zum Ziel hinzufügen.

+8

Für zukünftige Leser. Wenn noch weniger Kontext verfügbar ist: 'RequestCycle.get(). Find (AjaxRequestTarget.class)' –

+0

Wie bekommt man es in Wicket Version 8? Es ist nicht die gleiche Art und Weise Ursache, wenn ich die Abhängigkeiten zu Version 8 aktualisieren, sagt es etwas falsch ist, aber in der Dokumentation ist die Definition der Methode find gleich – tomurlh

Verwandte Themen