情况如下:
在a4j:form中的rich:dataTable中,我创建一个a4j:commandLink来选择值并使用jboss el action语法将其传递给bean
action="#{bean.myaction(myparameter)}"
这没有问题。
但是如果我重新渲染表单以使用ajax调用过滤数据表,当我选择该值时,它会给出错误的结果:来自选择的索引,但来自过滤之前的数据。
有什么想法吗?
谢谢Zack在5分钟内给我正确的解决方案。
我认为在括号之间的动作中传递参数更优雅,但是,嘿:这是有效的。 :)
非常感谢你。
P.S。我也在编辑标题。
答案 0 :(得分:2)
尝试使用:
<a4j:commandLink action="#{bean.myaction}">
<f:param name="myparameter" value="paramValue" />
</a4j:commandLink>
然后通过requestParameter("myparameter")
通过FacesContext
在您的操作中访问该参数。
作为旁注,这不是jboss EL,它是统一表达语言(EL)。它只是JSP / JSF的一个特性,正如Sun所指定的那样。
答案 1 :(得分:2)
除了Zack的答案之外,我想说如果你需要扩展EL表达式以便能够使用参数调用方法,你可以使用EL Functors库:
action="#{bean.myaction$[myparameter].action}"
答案 2 :(得分:0)
您的数据表是否使用使用@DataModel注释的Collection进行填充?如果是这样,请尝试在过滤时将其从上下文中删除,以便重新请求它。
例如。
//In filter method
Contexts.removeFromAllContexts("yourDataModelCollection");
答案 3 :(得分:0)
将dataTable放在<a4j:region>
为我工作。这样,您仍然可以使用JBoss EL参数。