Warum EL gibt mir das falsche Objekt als Parameter zwischen Klammer?
Frage
Hier ist die Situation:
In einer reichen: Datatable in einer a4j: Form, erstelle ich ein a4j: command die Werte auswählen und auf die Bohne passiert mit der Jboss el Aktion Syntax
action="#{bean.myaction(myparameter)}"
Das funktioniert problemlos.
Aber wenn ich die Form wieder macht die Datentabelle mit einem Ajax-Aufruf zu filtern, wenn ich den Wert auswählen, es gibt mir die falschen Ergebnisse: den Index aus der Auswahl, aber die Daten aus der Zeit vor der Filterung
Irgendwelche Ideen?
Danke Zack dass sie mir die richtige Lösung in nur 5 Minuten.
Ich denke, vorbei Parameter in der Aktion in Klammern elegantere ist aber, hey: das funktioniert. :)
Danke sehr.
P. S. Ich bin die Bearbeitung der Titel zu.
Lösung
Versuchen Sie es mit:
<a4j:commandLink action="#{bean.myaction}">
<f:param name="myparameter" value="paramValue" />
</a4j:commandLink>
und dann Zugriff auf diesen Parameter in der Aktion über die requestParameter("myparameter")
durch die FacesContext
.
Als Randbemerkung, ist dies nicht EL ist jboss, dann ist es einheitliche Ausdruckssprache (EL). Es ist nur eine Funktion von JSP / JSF im Allgemeinen, wie von Sun angegeben.
Andere Tipps
Neben der Antwort der Zack, würde ich sagen, dass, wenn Sie brauchen, um die EL-Ausdrücke zu erweitern, um die Möglichkeit zu haben Methode mit Parametern aufrufen, können Sie die verwenden EL Funktoren Bibliothek:
action="#{bean.myaction$[myparameter].action}"
Ist Ihre Datentabelle mit einer Sammlung mit @DataModel kommentierten bevölkert? Wenn ja versuchen, es aus dem Kontext zu entfernen, wenn das Filtern, so dass es wird erneut angefordert.
zB.
//In filter method
Contexts.removeFromAllContexts("yourDataModelCollection");
Setzen der Datatable in einem <a4j:region>
für mich gearbeitet. Auf diese Weise können Sie immer noch JBoss EL Parameter verwenden.