Ajax请求和属性

时间:2016-09-08 20:17:38

标签: ajax jsf jsf-2 backing-beans

我正在尝试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>

如果有关于这个问题的好教程请分享链接:)

由于

2 个答案:

答案 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)}"/>