我需要需要包装的primefaces元素列表,<h:form>
以便通过某些primeface元素的任何操作进行更新,<p:ajax>
即使它们具有id,并且<p:ajax update="thisID">
其中仍然需要一个<h:form>
带有id的id,以便更新,以便哪些元素需要<h:form>
并且不需要
3 回答
言归正传,所有实现接口的EditableValueHolder
组件和接口都ActionSource
需要封装在一个UIForm
组件中。
在前面链接的 Javadocs 中,您可以在“所有已知的实现类”中找到哪些组件实现了它们。如果你仔细观察,你会发现它都是像 , 等这样的输入组件和像,inputText
等等这样的selectOneMenu
命令组件。在PrimeFaces API 文档中,例如代表implements的,所以它应该放在一个表单中.commandLink
commandButton
InputText
<p:inputText>
EditableValueHolder
这也与普通 HTML中的要求完全相同,HTML <input>
、<select>
、<textarea>
等应该放入 a<form>
中,以便将值发送到服务器端。毕竟,HTML 也是 JSF 最终产生的东西。
至于通过ajax更新元素,需要更新的组件并不需要放在表单中。您可以完美地更新当前表单之外的内容。您甚至可以更新其他表格。
这是对 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>
每个从支持 bean 提交/接收内容的组件都需要用<h:form>
.
因此,您要更新的所有内容或每个按钮/链接设置都需要在表单中。这也不是 Primefaces 的事情。此规则也适用于普通 JSF。