2012-03-21 15 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

あなたのコード次の変更を行います:

が属性を更新し、#{myBean.isValid}{#myBean.isValid}を変更するmybuttonを追加し、より良いところで、ここで追加の簡単な作業例をoncomplete

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

onsuccessへの変更:

<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

+0

何も変わらないので面白いです...何があってもダイアログボックスを閉じます。 – aylak

+0

ありがとうございますが、私の問題は依然として存在します。 – aylak

0

Primefacesのショーケース(Login Demo)には、あなたが望むことを正確に示す例があります。あなたはそれを適応させることができます。

+0

私はそこにも見ましたが、問題は本当に大きなプロジェクトですコードのこの部分ではない可能性があります。今私はページをリフレッシュすることでこれをやっていますが、もちろん絶対的な解決策ではありません。私が問題を解決すれば、私はここに書きます。あなたの興味に感謝します。 – aylak

+0

@DrewJordanあなたは正しいです。このコメントをいただきありがとうございます。多分いつか私は私のポストを削除します。 –

0

申し訳ありません申し訳ありませんが、私はこの質問が2012年に戻ってきたことに気付きました。 actionListenerメソッドからダイアログボックスを非表示にすることができます。メールが有効な場合は RequestContext.getCurrentInstance().execute("dlg1.hide()"); に電話するだけです。ありがとう!

関連する問題