我需要<h:form>
需要包装的primefaces元素列表,以便通过<p:ajax>
的任何动作更新一些主要元素,即使它们具有id并且在{{ 1}}它仍然需要一个<p:ajax update="thisID">
,其中有一个id被更新,以便哪些元素需要<h:form>
并且不需要
答案 0 :(得分:6)
到目前为止,实施the EditableValueHolder
interface和the ActionSource
interface的所有组件都需要包含在an UIForm
component中。
在上述链接的Javadoc中,您可以在“所有已知的实现类”中找到哪些组件实现它们的指示。如果你仔细观察,那么你会注意到它是所有输入组件,如inputText
,selectOneMenu
等,以及commandLink
,commandButton
等命令组件。 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。