Atu*_*tul 1 richfaces jsf-2 jsf-1.2
我们正在从jsf 1.2升级到jsf 2.我们正在使用apache myfaces 2.1和富面4.3.
以下是xhtml代码:
迁移之前:
<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>
Run Code Online (Sandbox Code Playgroud)
我们传递一个参数,并在actionListener方法中接受参数: (String)context.getExternalContext().getRequestParameterMap().get("name1");
迁移后:
<h:selectBooleanCheckbox id="comp1" value="#{bean.select}">
<a4j:ajax event="click" listener="#{bean.processInput}" execute="@this" render="compId"/>
</h:selectBooleanCheckbox>
Run Code Online (Sandbox Code Playgroud)
我想将参数传递给bean.processInput方法,该方法具有以下签名:
public void processInput(AjaxBehaviorEvent event){
Run Code Online (Sandbox Code Playgroud)
根据这篇文章 - 在f:ajax中传递参数的问题,我们不能使用<f:param>(它也不工作),我们没有使用EL 2.2来排除方法签名中的传递参数.
由于我们不能使用context.getApplication().evaluateExpressionGet由于我们的xhtml页面中的约束只有可用选项<a4j:param name="" value="" assignTo=""/>.
但是这需要在bean中定义一个需要代码更改的变量.
所以我的问题是我们可以在第二种情况下将参数从UI传递给侦听器,而无需更改代码.
你可以f:attribute像这样使用:
<h:selectBooleanCheckbox id="comp1" value="#{bean.select}">
<a4j:ajax event="click" listener="#{bean.processInput}" execute="@this" render="compId"/>
<f:attribute name="name" value="paramValue" />
</h:selectBooleanCheckbox>
Run Code Online (Sandbox Code Playgroud)
并在你的bean中使用它:
public void processInput(AjaxBehaviorEvent event)
{
System.out.println(event.getComponent().getAttributes().get("name"));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9958 次 |
| 最近记录: |