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
interface和the ActionSource
interface的组件都需要包含在an UIForm
component中。
在上述链接的Javadoc中,您可以在“所有已知的实现类”中找到哪些组件实现它们的指示。如果你仔细观察,那么你会发现它是所有输入组件,如inputText
,selectOneMenu
等,并命令组件,如commandLink
,commandButton
等。在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:表单进行更新的主要内容,如果未能解决你的问题,请参考以下文章
JSF(Primefaces)通过ID更新几个元素的ajax
JSF 2.0 更新 primefaces 对话框第一次不起作用