2012-03-21 73 views
0

我在對話框中檢查郵件是否使用正則表達式有效。根據結果​​,我希望對話框關閉或保持打開狀態,但無論郵件地址是否有效,它總是關閉。我的bean函數返回正確的結果(myBean.isValid),我調試它。可能是什麼問題?檢查條件後顯示對話框

這裏是我的代碼:

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

在此先感謝。

回答

1

做了如下修改你的代碼:

添加mybutton更新屬性和更改{#myBean.isValid}#{myBean.isValid}和你最好改變oncompleteonsuccess

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

BTW在這裏的附加簡單的工作例如:

<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> 

豆碼

。 。 。

boolean evenNumber; 

public boolean isEvenNumber() { 
    return evenNumber; 
} 

public void setEvenNumber(boolean evenNumber) { 
    this.evenNumber = evenNumber; 
} 


public void lalala(ActionEvent actionEvent) { 
    evenNumber = !evenNumber; 
} 

。 。 。

+0

沒關係,我以前試過。但是,謝謝。 – aylak 2012-03-21 15:03:13

+0

這很有趣,因爲沒有任何變化......無論如何它仍然關閉對話框。 – aylak 2012-03-21 15:12:16

+0

謝謝,但我的問題依然存在。 – aylak 2012-03-22 08:43:56

0

在Primefaces展示櫃中有一個例子(Login Demo)正好符合你的要求。你可以調整它。

+0

我也看過那裏,但可能是問題不在於這部分代碼它是一個非常大的項目。現在我通過刷新頁面來做到這一點,但當然這不是一個絕對的解決方案。如果我解決了這個問題,我會寫在這裏。感謝您的興趣。 – aylak 2012-03-28 19:40:06

+0

@DrewJordan你說得對。非常感謝您的評論。也許有一天我會刪除我的帖子.. – 2016-07-08 18:32:12

0

對不起,我剛剛注意到,這個問題在2012年被問及。​​所以任何其他人尋找答案可能會發現這有用。 您可以從actionListener方法隱藏對話框。當郵件有效時,您只需撥打 RequestContext.getCurrentInstance().execute("dlg1.hide()"); 即可。謝謝 !