Подтвердить что ты не робот

Как вызвать args.validationFailed в PrimeFaces oncomplete

При нажатии кнопки Save данные из действияDialog должны быть проверены. Если требуемая информация введена и действительна, будет отображаться второе диалоговое окно с названием reasonDialog.

Проверка 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>
4b9b3361

Ответ 1

Если использовать механизм проверки JSF (например, просто использовать валидаторы, которые бросают ValidatorException обычный способ с этим сообщением желаемых лиц), по какой-то причине действительно не вариант (я бы действительно подумал дважды, нет, трижды о работе над механизмом проверки JSF), тогда вы всегда можете использовать FacesContext#validationFailed(), чтобы сигнализировать JSF о том, что валидация вообще не удалась, что и есть то, что Функция проверки JSF выполняется под обложками при обнаружении ValidatorException.

FacesContext.getCurrentInstance().validationFailed();