我在对话框中使用正则表达式检查邮件是否有效。根据结果我希望对话框关闭或保持打开状态,但无论邮件地址是否有效,它总是关闭。我的bean函数返回正确的结果(myBean.isValid),我调试了它。可能是什么问题?
这是我的代码:
<p:commandButton value="Save"
actionListener="#{myBean.saveStg}"
update="growl,stg_panel,stg"
oncomplete="if(myBean.isValid){confirmation.hide()}else{confirmation.show()}" />
提前致谢。
答案 0 :(得分:1)
对您的代码进行以下更改:
添加mybutton
以更新属性并将{#myBean.isValid}
更改为#{myBean.isValid}
,您最好将oncomplete
更改为onsuccess
<p:commandButton id="mybutton" value="Save"
actionListener="#{myBean.saveStg}"
update="growl,stg_panel,stg,mybutton"
onsuccess="if(#{myBean.isValid}){confirmation.hide()}else{confirmation.show()}" />
b.t.w这是一个额外的简单工作示例:
<h:body>
<h:form prependId="false">
<h:panelGrid>
<p:commandButton id="basic" update="basic" value="Basic"
actionListener="#{myBean.lalala}"
onsuccess="if(#{myBean.evenNumber}){dlg1.show();}else{dlg1.hide();}"/>
</h:panelGrid>
<p:dialog id="basicDialog" header="Basic Dialog" widgetVar="dlg1">
<h:outputText value="Resistance to PrimeFaces is futile!" />
</p:dialog>
</h:form>
</h:body>
bean代码
。 。
boolean evenNumber;
public boolean isEvenNumber() {
return evenNumber;
}
public void setEvenNumber(boolean evenNumber) {
this.evenNumber = evenNumber;
}
public void lalala(ActionEvent actionEvent) {
evenNumber = !evenNumber;
}
。 。
答案 1 :(得分:0)
Primefaces展示中有一个例子(Login Demo),它正是你想要的。你可以适应它。
答案 2 :(得分:0)
抱歉,我刚刚注意到这个问题在2012年被问到了。所以其他寻找答案的人都会觉得这很有用。
您可以从actionListener方法隐藏对话框。你需要做的就是打电话
RequestContext.getCurrentInstance().execute("dlg1.hide()");
当邮件有效时。谢谢!