Приведенный выше пример хорош, очень хорош, однако есть одна проблема, которая может иметь решающее значение для некоторых пользователей программирования (была для меня).
Для фактического закрытия происходит 2 запроса ajax - сначала выдается CloseOnESCBehavior
, который вызывает window.close
. MW.close () отобразит javascript, который сначала вызовет сервер, чтобы запросить у него windowClosedCallback
, и только затем закроет (скрыт содержимое) модальное окно.
Я бы предложил вместо этого сделать что-то вроде этого - в коде ModalWindow ctor:
add(new AbstractBehavior() {
@Override
public void renderHead(IHeaderResponse response) {
response.renderOnDomReadyJavascript(
" if($(document).data('wicketWindowCloseBound')) {return;} "
+ " $(document).data('wicketWindowCloseBound', true); "
+ " $(document).bind('keyup', function(evt) {\n"
+ " if (evt.keyCode == 27) {\n"
+ getCloseJavacript()
+ "\n"
+ " evt.preventDefault();\n"
+ " evt.stopPropagation();\n"
+ " }\n"
+ " });\n");
}
});