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