[
https://issues.apache.org/jira/browse/WICKET-2617?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Igor Vaynberg reassigned WICKET-2617:
-------------------------------------
Assignee: Igor Vaynberg
> 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
>
> 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.