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

问题描述 投票:0回答:3

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

forms jsf-2 primefaces
3个回答
-1
投票

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

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


6
投票

至此,所有实现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更新元素,需要将待更新的组件放在表单中是不正确的。您可以完美地更新当前表单之外的内容。您甚至可以更新其他表单。


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>
© www.soinside.com 2019 - 2024. All rights reserved.