web-dev-qa-db-ja.com

PrimeFacesoncompleteでargs.validationFailedをトリガーする方法

Saveボタンを押すと、actionsDialogのデータを検証する必要があります。必要な情報が入力されて有効な場合、reasonDialogという2番目のダイアログが表示されます。

保存されたオブジェクトの非JSF検証は、エラーメッセージのリストを返すメソッドを使用して行われます。検証が失敗した場合、エラーメッセージはFacesMessageで表示されます。 oncompleteからifelse句をトリガーするには、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>
14
Seitaridis

JSFに組み込まれている検証機能を利用する場合(つまり、目的の顔メッセージを含む通常の方法でValidatorExceptionをスローするバリデーターを使用するだけ)は、何らかの理由で実際にはオプションではありません( JSF検証機能の回避について)、いつでも FacesContext#validationFailed() を使用して、検証が一般的に失敗したことをJSFに通知できます。これは、JSF検証機能が内部で行っていることとまったく同じです。 ValidatorExceptionがキャッチされたとき。

FacesContext.getCurrentInstance().validationFailed();
21
BalusC