我有一个数据输入表单,显示了许多字段(主要是 p:inputText )供用户提供。其中一些是LOV,因此我显示 p:对话框以允许用户选择正确的值。通过 p:inputText 旁边的 p:commandLink 显示 p:对话框。代码的主要部分如下所示:
<h:form id="parentForm">
(...)
<p:inputText value="#{CustomerCEVController.customer.municipality}" id="customerMncName"/>
<p:commandLink type="button" onclick="MunicipalityDlg.show()" styleClass="ui-icon ui-icon-search"/>
(...)
<p:commandButton value="Submit" id="save" actionListener="#{CustomerCEVController.saveButtonListener}" /> (...)
</h:form>
问题是,每当用户点击 p:commandLink 以显示 p:对话框(以允许他选择其中一个值)时,外部表单经历其生命周期阶段(恢复视图,应用请求值,处理验证等),因为 p:commandLink 被放置在 h:form 中。如何实现此对话框显示功能,同时避免在用户打开的每个对话框中发布 h:form ?
答案 0 :(得分:1)
只需将“return false”添加为onclick事件处理程序的最后一个语句。它会阻止commandLink的默认功能(发布表单)。
答案 1 :(得分:1)
只需在appendToBody
<p:dialog>
属性设置为true即可
<p:dialog header="Header Text" widgetVar="dlg" appendToBody="true">
//Content
</p:dialog>
这会将对话框附加为父表单外部的文档正文的子项。