我正在尝试this tutorial,它描述了如何将属性设置为服务器调用以及如何分析辅助bean上的属性;
<h:commandButton id="submit"
actionListener="#{userData.attributeListener}" action="result">
<f:attribute name="value" value="Show Message" />
<f:attribute name="username" value="JSF 2.0 User" />
</h:commandButton>
我google了很多,但大多数示例显示如何为同步调用设置attrs而不是异步调用:S所以我的问题是...如果那将是ajax调用以及如何在服务器上发送属性将它们放在支持bean上(参见建议A代码片段)?
建议A:
<h:commandButton id="submit"
actionListener="#{userData.attributeListener}" action="result">
<f:ajax>
<f:attribute/>? how to
</f:ajax>
</h:commandButton>
如果有关于这个问题的好教程请分享链接:)
由于
答案 0 :(得分:0)
好的,我刚写了一个测试,它将ajax块的属性设置为:
<h:commandButton id="submit"
actionListener="#{userData.callWithAttributes}" action="result">
<f:attribute name="a" value="#{testa}"/>
<f:attribute name="b" value="#{testb}"/>
<f:ajax .../>
</h:commandButton>
...和支持bean
...
public void callWithAttributes(ActionEvent e){
String a=(String) e.getComponent().getAttributes().get("a");
...
}
...
好像它工作得很好:)所以属性应放在事件制作组件块中 - 在这种特殊情况下h:commandButton
......
答案 1 :(得分:0)
要在辅助bean中设置两个属性,可以使用f:setPropertyActionListener
<h:commandButton action="#{bean.method}">
<f:setPropertyActionListener value="#{testA}" target="#{bean.valueA}/>
<f:setPropertyActionListener value="#{testB}" target="#{bean.valueB}/>
</h:commandButton>
或使用EL方法参数支持:
<h:commandButton action="#{bean.method(testA, testB)}"/>