0

我需要需要包装的primefaces元素列表,<h:form>以便通过某些primeface元素的任何操作进行更新,<p:ajax>
即使它们具有id,并且<p:ajax update="thisID">其中仍然需要一个<h:form>带有id的id,以便更新,以便哪些元素需要<h:form>并且不需要

4

3 回答 3

6

言归正传,所有实现接口EditableValueHolder组件和接口ActionSource需要封装在一个UIForm组件中。

在前面链接的 Javadocs 中,您可以在“所有已知的实现类”中找到哪些组件实现了它们。如果你仔细观察,你会发现它都是像 , 等这样的输入组件和像,inputText等等这样的selectOneMenu命令组件。在PrimeFaces API 文档中,例如代表implements的,所以它应该放在一个表单中.commandLinkcommandButtonInputText<p:inputText>EditableValueHolder

这也与普通 HTML中的要求完全相同,HTML <input><select><textarea>等应该放入 a<form>中,以便将值发送到服务器端。毕竟,HTML 也是 JSF 最终产生的东西。

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

于 2012-11-22T12:50:31.700 回答
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>
于 2012-11-22T11:21:29.960 回答
-1

每个从支持 bean 提交/接收内容的组件都需要用<h:form>.

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

于 2012-11-22T11:09:59.607 回答