我在下面创建了我的应用的简化版本。
<h:form>
<p:commandButton value="ADD NEW" action="#{sampleBean.onAddNew}" oncomplete="PF('addDialog').show()" update=":addForm"/>
</h:form>
单击按钮时,将打开以下对话框。
<p:dialog widgetVar="addDialog">
<h:form id="addForm">
<p:messages autoUpdate="true" closable="true"/>
<p:outputLabel value="Name :"/>
<p:inputText value="#{sampleBean.name}" required="true" requiredMessage="Name is a required field"/>
<p:outputLabel value="Address :"/>
<p:inputText value="#{sampleBean.address}"/>
<p:commandButton value="Save" action="#{sampleBean.save}" oncomplete="if (args && !args.validationFailed) PF('addDialog').hide();"/>
<p:commandButton value="Cancel" action="#{sampleBean.cancel}" immediate="true" oncomplete="PF('addDialog').hide()" update="addForm"/>
</h:form>
</p:dialog>
这是支持bean代码:
public void onAddNew()
{
name = "";
address = "";
}
public void save()
{
System.out.println("Saving ... " + name + " : " + address);
name = "";
address = "";
}
public void cancel()
{
System.out.println("Cancelling ... " + name + " : " + address);
name = "";
address = "";
}
我面临的问题是:
如果我在名称字段上遇到必填字段验证错误,并且输入了地址,之后如果我点击取消,我将调用操作方法&#34; sampleBean.cancel&#34;(重置两者名称和地址为空白)然后在隐藏对话框之前更新表单。
然而,在隐藏对话框之后,如果我再次点击ADD NEW,它仍然保持旧状态(我之前输入的地址值)。
我需要清除并显示没有任何旧值的对话框。
有人可以在上面的代码中指出问题吗?
我使用的是Primefaces 5.0
找到一个解决方案,但我不确定这是否是正确的解决方法。
<p:commandButton value="Cancel" action="#{sampleBean.cancel}" immediate="true" oncomplete="PF('addDialog').hide()" update="addForm">
<p:resetInput target="addForm"/>
</p:commandButton>
问候。
答案 0 :(得分:0)
我们有一个类似的对话取消按钮构建如下:
<p:commandButton value="#{bundle['common.action.cancel']}"
icon="#{bundle['common.icon.cancel']}"
action="#{bean.cancel}"
process="@this"
update="@none"
oncomplete="PF('dialog').hide();"/>
bean.cancel
将对话框输入值设置为null
,因此我们既不需要process
也不需要update
其他输入元素。