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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PrimeFaces元素需要h:表单进行更新相关的知识,希望对你有一定的参考价值。

我需要<h:form>需要包装的primefaces元素列表,以便通过<p:ajax>的任何操作进行更新 一些主要元素,即使他们有id并且在<p:ajax update="thisID">它仍然需要一个带有id的<h:form>被命令更新,所以哪些元素需要<h:form>而不是whick not

答案

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

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

另一答案

至此,所有实现the EditableValueHolder interfacethe ActionSource interface的组件都需要包含在an UIForm component中。

在上述链接的Javadoc中,您可以在“所有已知的实现类”中找到哪些组件实现它们的指示。如果你仔细观察,那么你会发现它是所有输入组件,如inputTextselectOneMenu等,并命令组件,如commandLinkcommandButton等。在PrimeFaces API documentation,例如代表InputText<p:inputText>实现EditableValueHolder,所以它应该放在一个表格中。

它也与plain vanilla HTML完全相同的重新要求,html <input><select><textarea>等应该进入<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>

以上是关于PrimeFaces元素需要h:表单进行更新的主要内容,如果未能解决你的问题,请参考以下文章

Primefaces,如何禁用表单验证?

JSF(Primefaces)通过ID更新几个元素的ajax

JSF 2.0 更新 primefaces 对话框第一次不起作用

从对话框更新PrimeFaces数据表行

PrimeFaces commandButton 无法导航或更新

单击菜单后,PrimeFaces布局需要手动刷新