以下代码段有效:
<h:form id="form1">
<h:inputHidden value="#{bean.field1}" id="field1"/>
<h:inputHidden value="#{bean.field2}" id="field2"/>
<h:inputHidden value="#{bean.field3}" id="field3"/>
<h:inputHidden value="#{bean.field4}" id="field4"/>
<h:inputHidden value="#{bean.field5}" id="field5"/>
<h:inputHidden value="#{bean.field6}" id="field6"/>
<h:inputHidden value="#{bean.field7}" id="field7"/>
<h:inputHidden value="#{bean.field8}" id="field8"/>
<h:inputHidden value="#{bean.field9}" id="field9"/>
<p:remoteCommand name="loadRecord" actionListener="#{bean.loadRecord}"
process="@this"
update="field1 field2 field3 field4 field5 field6 field7 field8 field9" />
</h:form>
问题在于,当要更新的字段数量很大(我有另外一个包含40个字段的页面)时,它变得无法维护。
我尝试使用
<p:remoteCommand name="loadRecord" actionListener="#{bean.loadRecord}"
process="@this" update="@form" />
但字段未更新。有什么想法吗?
更新
此问题不仅限于隐藏字段,它似乎适用于任何输入字段,例如
<h:inputText id="name" value="#{bean.name}" />
答案 0 :(得分:1)
您可以将Naming Container中的字段(如果它们组合在一起)包装起来。然后,您只需更新命名容器,它的所有内容也将更新。您的h:form
已经是NamingContainer,但如果您不想更新整个表单,可以试试这个:
<p:outputPanel id="myContainer">
<h:inputHidden value="#{bean.field1}" id="field1"/>
<h:inputHidden value="#{bean.field2}" id="field2"/>
<h:inputHidden value="#{bean.field3}" id="field3"/>
<h:inputHidden value="#{bean.field4}" id="field4"/>
...
</p:outputPanel>
<p:remoteCommand name="loadRecord" actionListener="#{bean.loadRecord}"
process="@this"
update="myContainer" />
答案 1 :(得分:-1)
您应该使用要更新的表单的ID。在您的情况下update="form1"