16

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

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

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

1 に答える 1

25

JSF 組み込みの検証機能を利用する (つまりValidatorException、目的の Faces メッセージを通常の方法でスローするバリデーターを使用するだけである) ことが実際に何らかの理由で選択肢ではない場合 (JSF 検証機能を回避することについて、私は本当に 2 回、いや、3 回考えます) )、その後、いつでも使用FacesContext#validationFailed()して、一般的に検証が失敗したことを JSF に知らせることができますValidatorException

FacesContext.getCurrentInstance().validationFailed();
于 2013-01-18T15:08:05.320 に答える