Минимальный пример диалогового окна:
<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. Это работает, но замедляет работу пользовательского интерфейса, потому что для открытия или закрытия диалогового окна требуется обращение к серверу.