Как вызвать 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>
Ответы
Ответ 1
Если использовать механизм проверки JSF (например, просто использовать валидаторы, которые бросают ValidatorException
обычный способ с этим сообщением желаемых лиц), по какой-то причине действительно не вариант (я бы действительно подумал дважды, нет, трижды о работе над механизмом проверки JSF), тогда вы всегда можете использовать FacesContext#validationFailed()
, чтобы сигнализировать JSF о том, что валидация вообще не удалась, что и есть то, что Функция проверки JSF выполняется под обложками при обнаружении ValidatorException
.
FacesContext.getCurrentInstance().validationFailed();