Übergabe-parameter a4j:ajax
Wir ein Upgrade von jsf 1.2, jsf 2.
Wir verwenden apache myfaces 2.1 und rich faces 4.3.
Unten ist der xhtml-code :
Vor der Migration :
<h:selectBooleanCheckbox id="comp1" value="#{bean.select}">
<a4j:support event="onclick" ajaxSingle="true" actionListener="#{bean.processInput}" reRender="compId">
<f:param name="name" value="paramValue"/>
</a4j:support>
</h:selectBooleanCheckbox>
Übergeben wir einen parameter mit und übernehmen Sie die parameter in der actionListener-Methode als : (String)context.getExternalContext().getRequestParameterMap().get("name1");
Nach Der Migration :
<h:selectBooleanCheckbox id="comp1" value="#{bean.select}">
<a4j:ajax event="click" listener="#{bean.processInput}" execute="@this" render="compId"/>
</h:selectBooleanCheckbox>
Ich soll ein parameter übergeben werden um die Bohne.processInput-Methode hat folgende Signatur :
public void processInput(AjaxBehaviorEvent event){
Laut diesem post - Probleme in der Weitergabe-parameter in der f:ajax , die wir nicht verwenden <f:param>
(seine nicht funktioniert
auch) und wir sind nicht mit EL 2.2 die Regeln, die übergabe-parameter in der Signatur der Methode.
Da wir Sie nicht verwenden Kontext.getApplication().evaluateExpressionGet, die aufgrund von Einschränkungen in unserer xhtml-Seite die option nur verfügbar ist
verwenden <a4j:param name="" value="" assignTo=""/>.
Aber das muss eine variable definiert, in der Bohne, dass code ändern.
Also meine Frage ist können wir übergeben einen parameter aus dem UI-listener im zweiten Fall und ohne Veränderung der code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
f:attribute
wie diese :Und verwenden Sie es in Ihrem bean :
Stellen Sie sicher, dass f:Attribut-Komponente ist nicht ein Kind Komponente a4j:ajax.
es sollte unmittelbar untergeordneten Komponente von h:selectBooleanCheckBox, wenn nicht die Hörer nicht auslösen.