[ 
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.

Reply via email to