首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将参数传递给a4j:ajax

将参数传递给a4j:ajax
EN

Stack Overflow用户
提问于 2014-01-02 23:30:41
回答 2查看 10.6K关注 0票数 1

我们正在从jsf 1.2升级到jsf 2。我们使用apache myfaces 2.1和rich faces 4.3。

下面是xhtml代码:

迁移前:

代码语言:javascript
运行
复制
<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>

我们通过传递一个参数,并接受actionListener方法中的参数:(String)context.getExternalContext().getRequestParameterMap().get("name1");

迁移后:

代码语言:javascript
运行
复制
<h:selectBooleanCheckbox id="comp1" value="#{bean.select}">
                <a4j:ajax event="click" listener="#{bean.processInput}" execute="@this" render="compId"/>                  
</h:selectBooleanCheckbox>

我想要向bean.processInput方法传递一个参数,该方法具有以下签名:

代码语言:javascript
运行
复制
public void processInput(AjaxBehaviorEvent event){

根据这篇Issues in passing parameter in f:ajax后的文章,我们不能使用<f:param> (它也不能工作),我们也没有使用EL 2.2,它排除了在方法签名中传递参数。

由于xhtml页面中的约束,我们不能使用context.getApplication().evaluateExpressionGet,唯一可用的选项是使用<a4j:param name="" value="" assignTo=""/>.,但这需要在需要更改代码的bean中定义一个变量。

所以我的问题是,在第二种情况下,我们是否可以在不更改代码的情况下将参数从UI传递给listener。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-02 23:50:05

您可以像这样使用f:attribute

代码语言:javascript
运行
复制
<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>

并在您的bean中使用它:

代码语言:javascript
运行
复制
public void processInput(AjaxBehaviorEvent event)
{
    System.out.println(event.getComponent().getAttributes().get("name"));
}
票数 6
EN

Stack Overflow用户

发布于 2014-10-14 09:24:54

确保f:attribute组件不是a4j:ajax的子组件。它应该是h:selectBooleanCheckBox的直接子组件,如果不是,则侦听器不会触发。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20886185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档