PrimeFaces元素需要h:表单进行更新

时间:2012-11-22 11:03:23

标签: forms jsf-2 primefaces

我需要<h:form>需要包装的primefaces元素列表,以便通过<p:ajax>的任何动作更新一些主要元素,即使它们具有id并且在{{ 1}}它仍然需要一个<p:ajax update="thisID">,其中有一个id被更新,以便哪些元素需要<h:form>并且不需要

3 个答案:

答案 0 :(得分:6)

到目前为止,实施the EditableValueHolder interfacethe ActionSource interface的所有组件都需要包含在an UIForm component中。

在上述链接的Javadoc中,您可以在“所有已知的实现类”中找到哪些组件实现它们的指示。如果你仔细观察,那么你会注意到它是所有输入组件,如inputTextselectOneMenu等,以及commandLinkcommandButton等命令组件。 PrimeFaces API documentation,例如代表<p:inputText>工具EditableValueHolder的{​​{3}},因此应将其放置在表单中。

它与InputText中的重新提问完全相同,HTML <input><select><textarea>等应按顺序排列<form>获取要发送到服务器端的值。毕竟,HTML也是JSF最终产生的。

至于通过ajax更新元素,将待更新的组件需要放置在表单中是不正确的。您可以完美地更新当前表单之外的内容。您甚至可以更新其他表单。

答案 1 :(得分:2)

这是对PatrickT答案的略微修改。您还可以更新表单外的内容。但是你要提交的数据应该是afaik表格的一部分。

<p:messages id="outsideForm" showDetail="true"></p:messages>
<h:form id="kalle">
<p:messages id="insideForm" showDetail="true"></p:messages>
    <p:inputText required="true"></p:inputText>
    <p:commandButton value="submit" update=":outsideForm,insideForm"/>
</h:form>

答案 2 :(得分:-1)

从/向承诺bean提交/接收内容的每个组件都需要由<h:form>包装。

因此,您要更新的所有内容或每个Button / Link设置都需要在表单中。这也不是Primefaces的事情。此规则也适用于普通的JSF。