p: resetInput在重新打开p:对话框时不会重置该对话框



以下是我正在编写的一些html,允许使用对话框添加类别:

<p:dialog id="newCategoryDlg" header="Add New Category" widgetVar="newCategoryDialog" resizable="false">
    <h:form id="newCategoryForm">
        <p:panelGrid id="displayNewCategory" columns="2" cellpadding="4" style="margin:0 auto;">
            <h:outputText value="Category Name :"></h:outputText>
            <p:inputText value="#{categoryController.newCategory.name}"
                         required="true" requiredMessage="Please Enter a Category ID!" />

            <f:facet name="footer">
                <p:commandButton value="Submit" update=":form:categoryTable"
                                 oncomplete="newCategoryDialog.hide();"
                                 actionListener="#{categoryController.addCategory}">
                    <p:resetInput target="displayNewCategory" />
                </p:commandButton>
                <p:commandButton type="reset" value="Reset"></p:commandButton>
            </f:facet>
        </p:panelGrid>


    </h:form>
</p:dialog>

现在,无论出于什么原因,无论我使用哪个小部件或标识符,"似乎都不起作用。我只想让旧的输入条目在提交后消失。我做错了什么?

您误解了<p:resetInput>的用途。这个误解基本上已经在这里得到了回答/解释:为什么p:resetInput要求在提交表单后首先将托管bean的属性设置为null?

至于在打开之前需要更新对话框内容的具体功能要求,只需在打开对话框的命令按钮中执行即可:

<h:form>
    <p:commandButton value="Open dialog" action="#{dialogBean.init}" 
        process="@this" update=":dialog" oncomplete="w_dialog.open()" />
</h:form>
...
<p:dialog id="dialog" widgetVar="w_dialog" ...>

请注意,当对话框包含需要验证的字段时,<p:resetInput>将非常适用于更新和打开对话框以清除无效状态的按钮。

另请参阅:

  • 如何在p:对话框中显示p:dataTable中当前行的详细信息并在保存后更新
  • 了解PrimeFaces进程/更新和JSF f:ajaxexecute/render属性

最新更新