我有一个有两种形式的JSF页面(下面是伪代码).
第一种形式是针对用户的,具有文本字段和电话号码表,以及用于添加新电话号码的链接.
第二种形式是p:对话框,显示用于向列表添加电话号码的表单.
我的问题是在p:对话框关闭后,我希望列表没有得到更新.如果我将p:dialog标记放在第一个表单中,列表会更新,但有两个单独的表单,因为我需要在单独的操作中验证它们的内容.
我的问题的简短版本:p:对话框有一个attr update ="phonesPanel",但是phonePanel的格式不同; 我该怎么做像update ="personForm.phonesPanel"这样的东西,以便更新不同形式的列表?
<h:form id="personForm">
<p:messages />
<h:inputText label="Full Name" value="... />
<p:commandLink value="Add Phone Number" onclick="dlg.show();" />
<h:panelGrid id="phonesPanel" columns="1" style="width:100%" >
<h:dataTable id="phonesTable">
// ...
</h:dataTable>
</h:panelGrid>
</h:form>
<h:form>
<p:dialog id="dialog" modal="true" widgetVar="dlg">
<p:messages />
<h:inputText label="Phone Number" value="... />
<p:commandButton value="Add Phone Number" update="phonesPanel"
actionListener="#{handler.doAddPhoneNumber}"
oncomplete="handleLoginRequest(xhr, status, args)"/>
</p:dialog>
</h:form>
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏!
抢
您可以做的其他事情是将"prependId"表单属性设置为"false":
<h:form prependId="false">
Run Code Online (Sandbox Code Playgroud)
这样您就不需要使用嵌套ID了,可能会使用:
update="phonesPanel"
Run Code Online (Sandbox Code Playgroud)
我怀疑update ="personForm:phonesPanel"在personForm之前没有":"的情况下工作.这应该是正确的:
update=":personForm:phonesPanel"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16866 次 |
| 最近记录: |