检查条件后显示对话框

时间:2012-03-21 14:32:40

标签: primefaces

我在对话框中使用正则表达式检查邮件是否有效。根据结果​​我希望对话框关闭或保持打开状态,但无论邮件地址是否有效,它总是关闭。我的bean函数返回正确的结果(myBean.isValid),我调试了它。可能是什么问题?

这是我的代码:

<p:commandButton value="Save"
   actionListener="#{myBean.saveStg}"
   update="growl,stg_panel,stg" 
   oncomplete="if(myBean.isValid){confirmation.hide()}else{confirmation.show()}" />

提前致谢。

3 个答案:

答案 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()"); 当邮件有效时。谢谢!