From 3d3ed4d5377b2511ea91fa90e8c632746688bc35 Mon Sep 17 00:00:00 2001 From: Musachy Barroso Date: Mon, 13 Aug 2007 20:47:50 +0000 Subject: [PATCH] WW-2106 HTML loaded by the ajax tags is parsed for dojo widgets, this should be optional and there should be a "parseContent" attribute to control it git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@565512 13f79535-47bb-0310-9956-ffa450edef68 --- .../struts2/dojo/components/AbstractRemoteBean.java | 10 ++++++++++ .../org/apache/struts2/dojo/components/RemoteBean.java | 2 ++ .../org/apache/struts2/dojo/components/Submit.java | 8 ++++++++ .../struts2/dojo/views/jsp/ui/AbstractRemoteTag.java | 6 ++++++ .../apache/struts2/dojo/views/jsp/ui/SubmitTag.java | 6 ++++++ .../src/main/resources/template/ajax/ajax-common.ftl | 3 +++ plugins/dojo/src/main/resources/template/ajax/bind.ftl | 5 +++++ .../apache/struts2/dojo/views/jsp/ui/AnchorTest.java | 2 +- .../org/apache/struts2/dojo/views/jsp/ui/BindTest.java | 1 + .../org/apache/struts2/dojo/views/jsp/ui/DivTest.java | 1 + .../struts2/dojo/views/jsp/ui/SubmitAjaxTest.java | 1 + .../org/apache/struts2/dojo/views/jsp/ui/Bind-1.txt | 3 ++- .../org/apache/struts2/dojo/views/jsp/ui/div-1.txt | 3 ++- .../org/apache/struts2/dojo/views/jsp/ui/href-1.txt | 3 ++- .../apache/struts2/dojo/views/jsp/ui/submit-ajax-1.txt | 1 + 15 files changed, 51 insertions(+), 4 deletions(-) diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/AbstractRemoteBean.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/AbstractRemoteBean.java index 2bc06b21c..e6f442bab 100644 --- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/AbstractRemoteBean.java +++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/AbstractRemoteBean.java @@ -51,6 +51,7 @@ public abstract class AbstractRemoteBean extends ClosingUIBean implements Remote protected String highlightDuration; protected String separateScripts; protected String transport; + protected String parseContent; public AbstractRemoteBean(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { @@ -100,6 +101,10 @@ public abstract class AbstractRemoteBean extends ClosingUIBean implements Remote addParameter("separateScripts", findValue(separateScripts, Boolean.class)); if (transport != null) addParameter("transport", findString(transport)); + if (parseContent != null) + addParameter("parseContent", findValue(parseContent, Boolean.class)); + else + addParameter("parseContent", true); } @Override @@ -233,4 +238,9 @@ public abstract class AbstractRemoteBean extends ClosingUIBean implements Remote public void setTransport(String transport) { this.transport = transport; } + + @StrutsTagAttribute(description="Parse returned HTML for Dojo widgets", defaultValue="true", type="Boolean") + public void setParseContent(String parseContent) { + this.parseContent = parseContent; + } } diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/RemoteBean.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/RemoteBean.java index 4b44e99db..01260f924 100644 --- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/RemoteBean.java +++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/RemoteBean.java @@ -66,4 +66,6 @@ public interface RemoteBean { void setSeparateScripts(String separateScripts); void setTransport(String transport); + + void setParseContent(String parseContent); } diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Submit.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Submit.java index fb0f5a102..98e075462 100644 --- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Submit.java +++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Submit.java @@ -176,6 +176,7 @@ public class Submit extends FormButton implements RemoteBean { protected String ajaxAfterValidation; protected String separateScripts; protected String transport; + protected String parseContent; public Submit(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { super(stack, request, response); @@ -242,6 +243,8 @@ public class Submit extends FormButton implements RemoteBean { addParameter("separateScripts", findValue(separateScripts, Boolean.class)); if (transport != null) addParameter("transport", findString(transport)); + if (parseContent != null) + addParameter("parseContent", findValue(parseContent, Boolean.class)); Boolean validateValue = false; if (validate != null) { @@ -455,4 +458,9 @@ public class Submit extends FormButton implements RemoteBean { public void setTransport(String transport) { this.transport = transport; } + + @StrutsTagAttribute(description="Parse returned HTML for Dojo widgets", defaultValue="true", type="Boolean") + public void setParseContent(String parseContent) { + this.parseContent = parseContent; + } } diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AbstractRemoteTag.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AbstractRemoteTag.java index 35ef52c22..d32cb455e 100644 --- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AbstractRemoteTag.java +++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AbstractRemoteTag.java @@ -41,6 +41,7 @@ public abstract class AbstractRemoteTag extends AbstractClosingTag { protected String highlightDuration; protected String separateScripts; protected String transport; + protected String parseContent; protected void populateParams() { super.populateParams(); @@ -65,6 +66,7 @@ public abstract class AbstractRemoteTag extends AbstractClosingTag { remote.setHighlightDuration(highlightDuration); remote.setSeparateScripts(separateScripts); remote.setTransport(transport); + remote.setParseContent(parseContent); } public void setHref(String href) { @@ -142,4 +144,8 @@ public abstract class AbstractRemoteTag extends AbstractClosingTag { public void setTransport(String transport) { this.transport = transport; } + + public void setParseContent(String parseContent) { + this.parseContent = parseContent; + } } diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/SubmitTag.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/SubmitTag.java index 0c6556a27..ac1f90dd0 100644 --- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/SubmitTag.java +++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/SubmitTag.java @@ -62,6 +62,7 @@ public class SubmitTag extends AbstractUITag { protected String ajaxAfterValidation; protected String separateScripts; protected String transport; + protected String parseContent; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new Submit(stack, req, res); @@ -97,6 +98,7 @@ public class SubmitTag extends AbstractUITag { submit.setAjaxAfterValidation(ajaxAfterValidation); submit.setSeparateScripts(separateScripts); submit.setTransport(transport); + submit.setParseContent(parseContent); } public void setMethod(String method) { @@ -206,4 +208,8 @@ public class SubmitTag extends AbstractUITag { public void setTransport(String transport) { this.transport = transport; } + + public void setParseContent(String parseContent) { + this.parseContent = parseContent; + } } diff --git a/plugins/dojo/src/main/resources/template/ajax/ajax-common.ftl b/plugins/dojo/src/main/resources/template/ajax/ajax-common.ftl index 311a69a56..8eac658d3 100644 --- a/plugins/dojo/src/main/resources/template/ajax/ajax-common.ftl +++ b/plugins/dojo/src/main/resources/template/ajax/ajax-common.ftl @@ -101,3 +101,6 @@ <#if parameters.transport?if_exists != ""> transport="${parameters.transport?html}"<#rt/> + <#if parameters.parseContent?exists> + parseContent="${parameters.parseContent?string?html}"<#rt/> + \ No newline at end of file diff --git a/plugins/dojo/src/main/resources/template/ajax/bind.ftl b/plugins/dojo/src/main/resources/template/ajax/bind.ftl index 6976c125e..52d65f396 100644 --- a/plugins/dojo/src/main/resources/template/ajax/bind.ftl +++ b/plugins/dojo/src/main/resources/template/ajax/bind.ftl @@ -155,6 +155,11 @@ <#if !firstField>,<#t/> <#assign firstField=false ><#t/> "transport": "${parameters.transport?html}"<#t/> + + <#if parameters.parseContent?exists> + <#if !firstField>,<#t/> + <#assign firstField=false ><#t/> + "parseContent": ${parameters.parseContent?string?html}<#t/> }); }); diff --git a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AnchorTest.java b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AnchorTest.java index 542cbeacd..7f2a766d3 100644 --- a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AnchorTest.java +++ b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AnchorTest.java @@ -26,7 +26,6 @@ import org.apache.struts2.dojo.TestAction; */ public class AnchorTest extends AbstractUITagTest { - public void testSimple() throws Exception { TestAction testAction = (TestAction) action; testAction.setFoo("bar"); @@ -54,6 +53,7 @@ public class AnchorTest extends AbstractUITagTest { tag.setAjaxAfterValidation("true"); tag.setSeparateScripts("true"); tag.setTransport("o"); + tag.setParseContent("false"); tag.doStartTag(); tag.doEndTag(); diff --git a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/BindTest.java b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/BindTest.java index a76ba0267..762b7b853 100644 --- a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/BindTest.java +++ b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/BindTest.java @@ -49,6 +49,7 @@ public class BindTest extends AbstractUITagTest { tag.setValidate("true"); tag.setSeparateScripts("true"); tag.setTransport("q"); + tag.setParseContent("false"); tag.doStartTag(); tag.doEndTag(); diff --git a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/DivTest.java b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/DivTest.java index 2bbfc64cb..7a13763a1 100644 --- a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/DivTest.java +++ b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/DivTest.java @@ -56,6 +56,7 @@ public class DivTest extends AbstractUITagTest { tag.setHighlightColor("o"); tag.setHighlightDuration("p"); tag.setTransport("q"); + tag.setParseContent("false"); tag.doStartTag(); tag.doEndTag(); diff --git a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/SubmitAjaxTest.java b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/SubmitAjaxTest.java index 591c9e5c0..05b5c0ef8 100644 --- a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/SubmitAjaxTest.java +++ b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/SubmitAjaxTest.java @@ -51,6 +51,7 @@ public class SubmitAjaxTest extends AbstractUITagTest { tag.setSeparateScripts("true"); tag.setTabindex("1"); tag.setTransport("p"); + tag.setParseContent("false"); tag.doStartTag(); tag.doEndTag(); diff --git a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Bind-1.txt b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Bind-1.txt index 29d824160..983bfd1f4 100644 --- a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Bind-1.txt +++ b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Bind-1.txt @@ -21,7 +21,8 @@ "validate": true, "ajaxAfterValidation":false, "scriptSeparation": true, - "transport": "q" + "transport": "q", + "parseContent" : false }); }); \ No newline at end of file diff --git a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/div-1.txt b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/div-1.txt index 76b59cc67..0f7c37bcf 100644 --- a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/div-1.txt +++ b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/div-1.txt @@ -22,5 +22,6 @@ highlightColor="o" highlightDuration="p" scriptSeparation="false" - transport="q"> + transport="q" + parseContent="false"> diff --git a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/href-1.txt b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/href-1.txt index a5c1e92d5..51b020444 100644 --- a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/href-1.txt +++ b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/href-1.txt @@ -19,5 +19,6 @@ highlightColor="m" highlightDuration="n" scriptSeparation="true" - transport="o"> + transport="o" + parseContent="false"> diff --git a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/submit-ajax-1.txt b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/submit-ajax-1.txt index 0f213042f..776d2a86b 100644 --- a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/submit-ajax-1.txt +++ b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/submit-ajax-1.txt @@ -23,4 +23,5 @@ highlightDuration="o" scriptSeparation="true" transport="p" + parseContent="false" />