Gestern wurde ich gefragt, ob und wie man denn vermeiden kann, dass man das AjaxRequestTarget immer als Funktionsargument weiterreichen muss, wenn man an anderer Stelle darauf zugreifen möchte. Ich muss zugeben, dass ich die einfache Antwort nicht sofort wusste (was, wie man sehen wird, erstaunlich ist). Ich wusste aber, dass mir kürzlich ein Stück Wicket-Code begegnet ist, wo ermittelt werden musste, ob ein AjaxRequest oder ein normaler Request abgearbeitet wird.
Ich machte mich also erneut auf die Suche und fand die Code-Zeile in der AjaxFallbackButton-Klasse. Ich war kurz davor ein paar Zeilen Code daraus abzuleiten und warf nur einen flüchtigen Code in die AjaxRequestTarget-Klasse, um festzustellen, das es das natürlich schon gibt.
| Java(TM) 2 Platform Standard Edition 5.0 | | copy code | | ? |
| 1 | AjaxRequestTarget target=AjaxRequestTarget.get(); |
So einfach geht das. So einfach, dass ich es fast übersehen hätte.


Moin moin,
es lohnt aber auch einen Blick in die Implementierung der Methode zu werfen:
public static AjaxRequestTarget get()
{
final RequestCycle requestCycle = RequestCycle.get();
if (requestCycle != null)
{
if (requestCycle.getRequestTarget() instanceof AjaxRequestTarget)
{
return (AjaxRequestTarget)requestCycle.getRequestTarget();
}
}
return null;
}
Man kann gut erkennen wie man von überall an ein Request Target kommen kann.
Ausserdem sieht man, dass die Methode null zurückgibt, wenn das aktuelle Target kein AjaxRequestTarget ist.
Danke für die Ergänzung:)