0

我有一个数据输入表单,它显示了许多字段(主要是p:inputText)供用户提供。其中一些是 LOV,因此我显示一个p:dialog以允许用户选择正确的值。p:dialog通过p:inputText旁边的p:commandLink显示。代码的主要部分如下所示:

<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:dialog(以允许他选择其中一个值)时,外部表单都会经历其生命周期阶段(恢复视图、应用请求值、流程验证等) .) 因为p:commandLink被放置在h:form中。如何实现此对话框显示功能,同时避免在用户打开的每个对话框中发布h:form ?

4

2 回答 2

1

只需将“return false”作为最后一条语句添加到 onclick 事件处理程序。它阻止了 commandLink 的默认功能(发布表单)。

于 2012-07-31T10:55:45.700 回答
1

只需添加将appendToBody属性设置为 true on<p:dialog>

<p:dialog header="Header Text" widgetVar="dlg" appendToBody="true">
   //Content
</p:dialog>

这会将对话框作为文档正文的子项附加到父表单之外。

于 2012-07-31T14:36:44.887 回答