From 07b20a1cd3118b744e361d02ca4a5607cccf124f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Leif=20=C3=85strand?= Date: Thu, 7 Jun 2012 14:02:38 +0000 Subject: [PATCH] Prevent double iframe and script tags if writeAjaxPageScriptWidgetset is overridden (#8924) svn changeset:23911/svn branch:6.8 --- .../server/AbstractApplicationPortlet.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java index 898bd2856c..edc151f22d 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java @@ -76,6 +76,8 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet private static final String PORTAL_PARAMETER_VAADIN_THEME = "vaadin.theme"; + public static final String WRITE_AJAX_PAGE_SCRIPT_WIDGETSET_SHOULD_WRITE = "writeAjaxPageScriptWidgetsetShouldWrite"; + // TODO some parts could be shared with AbstractApplicationServlet // TODO Can we close the application when the portlet is removed? Do we know @@ -1071,7 +1073,8 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet /** * Writes the script to load the widgetset on the HTML fragment created by - * the portlet. + * the portlet if the request attribute + * WRITE_AJAX_PAGE_SCRIPT_WIDGETSET_SHOULD_WRITE is set to Boolean.TRUE. * * @param request * @param writer @@ -1079,6 +1082,14 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet */ protected void writeAjaxPageWidgetset(RenderRequest request, BufferedWriter writer) throws IOException { + /* + * If the old method that used to add this code using document.write has + * been overridden, we shouldn't do anything here because then the + * iframe and script tag have already been added. + */ + if (request.getAttribute(WRITE_AJAX_PAGE_SCRIPT_WIDGETSET_SHOULD_WRITE) != Boolean.TRUE) { + return; + } String widgetsetURL = getWidgetsetURL(request); writer.write("