У меня есть кнопка (Make Popup Visible), которая делает всплывающее окно видимым. Когда форма отправляется (Отправить форму), сообщение об ошибке иногда может появляться в поле h: messages, которое ожидается.Как очистить h: сообщения в диалоге ace: после события ajax?
Моя проблема заключается в том, что когда я закрываю всплывающее окно (Make Popup Invisible), а затем снова открываю его (Make Popup Visible), поле h: messages по-прежнему заполняется старым сообщением об ошибке.
Есть ли способ, по которому я могу очистить сообщения, когда нажата кнопка «Сделать всплывающее окно»? Я не хочу делать полную страницу для этого.
Кнопка видимости:
<h:form id="mainForm">
<h:commandButton value="Make Popup Visible">
<f:ajax listener="#{controller.prepareDelete(item)}" render=":deleteItemPopup"/>
</h:commandButton>
</h:form>
Всплывающие:
<ace:dialog id="deleteItemPopup" visible="#{controller.deleting}">
<h:panelGroup rendered="#{controller.deleting}" layout="block">
<h:messages for="deleteItemPopupForm"/>
<h:form id="deleteItemPopupForm">
<ui:insert name="content">
This contains a form which, when submitted, can cause
an error message to be created and populate the h:messages
field
</ui:insert>
<h:commandButton value="Submit The Form" action="#{controller.delete}"/>
<h:commandButton value="Make Popup Invisible">
<f:ajax listener="#{controller.cancel}" render=":deleteItemPopup"/>
</h:commandButton>
</h:form>
</h:panelGroup>
</ace:dialog>
Команды:
public void prepareDelete(Item item) {
deleting = true;
}
public void cancel() {
deleting = false;
}
public void delete() {
.
.
.
} catch (MyException ex) {
FacesUtils.sendMessage("deleteItemPopupForm", ex);
}
}
двухкомпонентный немного JQuery или простой JavaScript, вы можете легко удалить содержимое на диалоговом Г события закрытия – Kukeltje
Да, но я бы предпочел сделать это «способ JSF» ... даже если он включал управление вещами в бэк-файле с FacesContext или что-то в этом роде. – wsaxton
Это действительный способ jsf ... компоненты туза выполняют много операций jquery за кулисами. Путь jsf был бы: в событии закрытия диалога, выполнить удаленный вызов на сервер (например, с помощью [omnifaces commandScript] (http://snapshot.omnifaces.org/components/commandScript) и в этой команде обновить панель или но это требует сервер roundtrip – Kukeltje