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.