Primefaces重置表格输入中的处理属性

时间:2014-02-12 08:12:33

标签: jsf jsf-2 primefaces

我在模式对话框中有一个表单,在关闭(事实上隐藏)之后,我想重置用户可能已更改的所有输入。我的内容如下:

<p:dialog widgetVar="myDialog">
    <h:form id="formId">
        <!-- ... -->
        <p:commandButton value="Cancel" onclick="myDialog.hide();"
            update="formId">
            <p:resetInput target="formId" />
        </p:commandButton>
    </h:form>
</p:dialog>

但结果并不是我所期待的。经过一段时间的搜索后,我找到了一个将process="@this"属性添加到<p:commandButton>的解决方案。我的问题是为什么有必要?在背景中真正发生了什么需要这个过程。我根本没有理解过程属性。

3 个答案:

答案 0 :(得分:4)

我已经完成了一些对话框的工作,并且我将表单设置为null的方式是,当单击按钮打开对话框时,我在支持bean中运行了一个方法,清除了我的pojo,因此我的表单有空值。

在你的情况下,它可能是这样的:

<h:form id="form-button">
    <p:commandButton id="AddButton" value="open dialog box"
        update=":form" action="#{myBean.myMethodToSetPojoNull}" immediate="true"
        oncomplete="PF('myDialog').show()" />
</h:form>

单击此按钮时,被调用的方法将设置为空所有字段,并且对话框将为空。回到你的问题,为什么process=@this需要更好解释答案就在这里

What is the function of @this exactly?

答案 1 :(得分:0)

您也可以在通过此方法提交后重置输入:

<p:commandButton value="Reset Non-Ajax"
    actionListener="#{pprBean.reset}" immediate="true" ajax="false">
    <p:resetInput target="panel" />
</p:commandButton>

答案 2 :(得分:-1)

如果不添加process =“@ this”,则默认属性值将设置为process =“@ form”,这意味着处理表单中的所有元素。在命令按钮中,process =“@ this”是强制执行与该按钮相关的相应操作。

您可以在此链接中直接参考Balusc的答案 What is the function of @this exactly?