2013-01-18 26 views
10

Saveボタンを押すと、actionsDialogのデータを検証する必要があります。必要な情報が入力され、有効であれば、reasonDialogという2番目のダイアログが表示されます。PrimeFacesでargs.validationFailedをトリガする方法oncomplete

保存されたオブジェクトの非JSF検証は、エラー・メッセージのリストを戻すメソッドを使用して行われます。私は検証が失敗した場合、エラーメッセージはFacesMessageで表示されます。 oncompleteからif else節をトリガーするには、objectsBean.validateでどうすればよいですか?

<p:dialog id="actionsDialog" widgetVar="actionsDialog" dynamic="true" 
    resizable="false" width="800" modal="true"> 
    <ui:include src="/WEB-INF/flows/custom-flow/genericObject.xhtml"/> 
    <f:facet name="footer"> 
     <p:commandButton value="Save" update="msgs" 
      oncomplete="if (args.validationFailed) {reasonDialog.hide()} else {reasonDialog.show()}" 
      actionListener="#{objectsBean.validate}"/> 
     <p:commandButton value="Cancel" immediate="true" oncomplete="actionsDialog.hide()" /> 
    </f:facet> 
</p:dialog> 

答えて

17

(すなわち、単にValidatorExceptionを投げるバリデータを使用し、その中に希望を持つ通常の方法でメッセージに直面している)JSF-組み込みの検証機能を利用することは実際にいくつかの理由でできない場合は(私は本当にいや、よく考えたいですJSF検証機能を使って作業することについては3回)、通常FacesContext#validationFailed()を使用して、検証が一般的に失敗したことをJSFに知らせることができます。これは、ValidatorExceptionが捕捉されたときにJSF検証機能が行っていることです。

+0

JSFライフサイクルが続き、モデル値を更新してアプリケーションを起動します。これを行うか、例外をスローします。検証が失敗したときにページのレンダリングを停止する方法はありますか? – MounirReg

+0

@Mounir:これは正常な動作ではありません。ここではhttp://stackoverflow.com/tags/jsf/infoで指示されているような質問をするだけで、問題が発生していない場合に備えて、問題を観察し、デバッグし、解決することができます。 – BalusC

関連する問題