PrimeFaces :: display p:用于填写表单字段的对话框,无需重新发布

时间:2012-07-31 10:46:13

标签: jsf primefaces

我有一个数据输入表单,显示了许多字段(主要是 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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

只需在appendToBody

添加<p:dialog>属性设置为true即可
<p:dialog header="Header Text" widgetVar="dlg" appendToBody="true">
   //Content
</p:dialog>

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