在JSF中更新多个表单

时间:2017-03-15 09:10:39

标签: forms jsf

你好,我有类似的东西:

<h:form id="firstForm">
 here i have some input fields
</h:form>
<h:form id="secondForm">
  here i have some input fields
</h:form>
<h:form id="thirdForm">
<p:commandButton id="completeOne" type="button"
                                        value="Complete">
                                        </p:commandButton>
</h:form>

我的问题是,按完成按钮我可以更新表单:firstForm和secondForm

2 个答案:

答案 0 :(得分:2)

要通过AJAX请求指示应更新哪些组件(即接收新的HTML),有一个恰当命名的属性update: - )。

在您的情况下,如果您希望CommandButton更新firstFormsecondForm,请使用:

<p:commandButton id="completeOne"
    type="button" value="Complete" update="firstForm secondForm">
</p:commandButton>

PrimeFaces文档中描述了这一点:

  

AJAX和非AJAX

     

CommandButton具有内置的ajax功能,ajax提交是   默认情况下启用并使用ajax属性进行配置。什么时候   ajax属性设置为false,表单提交为常规完整   页面刷新。

     

update属性用于部分更新其他属性   收到ajax响应后的组件。更新   attribute采用逗号或空格分隔的JSF组件列表   要更新的ID。基本上是任何JSF组件,而不仅仅是PrimeFaces   应该使用Ajax响应更新组件。

PrimeFaces User Guide 6.0

update属性的默认值为@form,表示只更新包含该组件的表单。在你的情况下,thirdForm, 这还不够。

注意:

普通JSF(即没有PrimeFaces)具有f:ajax tag的类似属性,表示要更新哪些组件。但是,对于f:ajax,它被称为render,而不是update。很容易混淆两者,特别是如果你混合普通的JSF和PrimeFaces标签。

答案 1 :(得分:-1)

您可以使用它的ID来选择表单。因此,例如在JQuery中,这将是:

$( "#completeOne" ).click(function() {
  $("#firstForm").doSomethingWithIt
  $("#secondForm").doSomethingWithIt
});