Оставьте диалоговое окно p: открытым, если после подтверждения произошла ошибка проверки
Минимальный пример диалога:
<p:dialog header="Test Dialog"
widgetVar="testDialog">
<h:form>
<p:inputText value="#{mbean.someValue}"/>
<p:commandButton value="Save"
onsuccess="testDialog.hide()"
actionListener="#{mbean.saveMethod}"/>
</h:form>
</p:dialog>
То, что я хочу сделать, это сделать так, чтобы mbean.saveMethod каким-то образом препятствовал закрытию диалога, если была какая-то проблема, и выводил сообщение только через рычание. Это тот случай, когда валидатор не поможет, потому что нет способа определить, допустимо ли someValue, пока сохранение не будет отправлено на внутренний сервер. В настоящее время я делаю это с помощью атрибута visible и указываю на логическое поле в mbean. Это работает, но замедляет пользовательский интерфейс, потому что всплывающее или закрывающее диалоговое окно требует попадания на сервер.