После моего предыдущего поста про переход от ice:panelPopup
к ace:dialog
мне задавали вопросы, как в случае необходимости можно отследить закрытие всплывающего окна.
Действительно, раньше отображение высплывающего окна управлялось атрибутами visible и endered, задаваемыми в переменной управляемого бина, поэтому его закрытие можно было обработать и вызвать метод, выполняющий необходимые для этого действия (например, очистить все поля или освободить какие-либо ресурсы) очевидным образом - например, в сеттере. Теперь, когда управление окном осуществляется на стороне клиента при помощи JavaScript, используется ace:ajax
. В *.xhtml нужно добавить:
<ace:dialog id="dialog"
header="..."
widgetVar="popupDialog"
closable="true"
modal="true"
draggable="false"
showEffect="clip"
hideEffect="fade" >
<ace:ajax event="close" listener="#bean.closeEventListener}"/>
</ace:dialog>
Код управляемого бина:
...
public void closeEventListener(CloseEvent event) {
System.out.println("Handle popup close event here.");
}
...