[ https://issues.apache.org/jira/browse/WICKET-2617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12791863#action_12791863 ]
Michael Mikhulya commented on WICKET-2617: ------------------------------------------ I've checked revision 891612, all works like a charm now. Thank you! > ModalWindow can't be shown when it is rendered with ajax request > ---------------------------------------------------------------- > > Key: WICKET-2617 > URL: https://issues.apache.org/jira/browse/WICKET-2617 > Project: Wicket > Issue Type: Bug > Components: wicket > Affects Versions: 1.4.4 > Reporter: Michael Mikhulya > Assignee: Igor Vaynberg > Fix For: 1.4.5 > > > Regression appeared with 1.4.4 release, in previous releases all worked fine. > I load page in two requests. First one loads very small html, which then > loads remaining part with ajax request. > (I do so to pass parameters after '#' to server in similar way as it is done > in gmail, but there are other reasons to render ModalWindow with ajax > request). > ModalWindow is rendered (but not shown) with second (ajax) request. > The private variable "shown" is set to true: > protected void onBeforeRender() > { > shown = makeContentVisible(); > Because of following implementation of makeContentVisible method: > protected boolean makeContentVisible() > { > // if user is refreshing whole page, the window will not be > shown > return getWebRequest().isAjax(); > } > But when I call "show" method nothing happens: > public void show(final AjaxRequestTarget target) > { > if (shown == false) > { > getContent().setVisible(true); > target.addComponent(this); > target.appendJavascript(getWindowOpenJavascript()); > shown = true; > } > } > Actually there are two problems: > 1) behavior has changed > 2) I didn't find safe workaround for this problem. > Unsafe workaround as follows, notice, it can break with next wicket release > since base "show" method is not called in sub class: > class MyModalWindow extends ModalWindow { > protected boolean visible = false; > @Override > protected boolean makeContentVisible() { > return visible; > } > @Override > public void show(org.apache.wicket.ajax.AjaxRequestTarget target) { > visible = true; > getContent().setVisible(true); > target.addComponent(this); > target.appendJavascript(getWindowOpenJavascript()); > }; > @Override > public void close(AjaxRequestTarget target) { > visible = false; > super.close(target); > } > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.