You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Igor Vaynberg (JIRA)" <ji...@apache.org> on 2009/12/17 00:33:18 UTC

[jira] Resolved: (WICKET-2617) ModalWindow can't be shown when it is rendered with ajax request

     [ https://issues.apache.org/jira/browse/WICKET-2617?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Igor Vaynberg resolved WICKET-2617.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: 1.4.6

found the regression, should be fixed

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