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 1de840c8a..2bc06b21c 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 @@ -50,6 +50,7 @@ public abstract class AbstractRemoteBean extends ClosingUIBean implements Remote protected String highlightColor; protected String highlightDuration; protected String separateScripts; + protected String transport; public AbstractRemoteBean(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { @@ -97,6 +98,8 @@ public abstract class AbstractRemoteBean extends ClosingUIBean implements Remote addParameter("highlightDuration", findString(highlightDuration)); if (separateScripts != null) addParameter("separateScripts", findValue(separateScripts, Boolean.class)); + if (transport != null) + addParameter("transport", findString(transport)); } @Override @@ -225,4 +228,9 @@ public abstract class AbstractRemoteBean extends ClosingUIBean implements Remote public void setSeparateScripts(String separateScripts) { this.separateScripts = separateScripts; } + + @StrutsTagAttribute(description="Transport used by Dojo to make the request", defaultValue="XMLHTTPTransport") + public void setTransport(String transport) { + this.transport = transport; + } } diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/AbstractValidateBean.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/AbstractValidateBean.java index abab16543..68b10015f 100644 --- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/AbstractValidateBean.java +++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/AbstractValidateBean.java @@ -55,7 +55,7 @@ public abstract class AbstractValidateBean extends AbstractRemoteBean { this.validate = validate; } - @StrutsTagAttribute(description = "Make an asynchronous request if validation succeeds. Only valid is 'validate' is 'true'", type="Boolean", + @StrutsTagAttribute(description = "Make an asynchronous request if validation succeeds. Only valid if 'validate' is 'true'", type="Boolean", defaultValue = "false") public void setAjaxAfterValidation(String ajaxAfterValidation) { this.ajaxAfterValidation = ajaxAfterValidation; diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Autocompleter.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Autocompleter.java index 41315d2d4..e78c33074 100644 --- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Autocompleter.java +++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Autocompleter.java @@ -148,6 +148,7 @@ public class Autocompleter extends ComboBox { protected String errorNotifyTopics; protected String valueNotifyTopics; protected String resultsLimit; + protected String transport; public Autocompleter(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { @@ -218,6 +219,8 @@ public class Autocompleter extends ComboBox { keyName = name + "Key"; addParameter("keyName", findString(keyName)); } + if (transport != null) + addParameter("transport", findString(transport)); String keyNameExpr = "%{" + keyName + "}"; addParameter("key", findString(keyNameExpr)); @@ -401,8 +404,13 @@ public class Autocompleter extends ComboBox { this.valueNotifyTopics = valueNotifyTopics; } - @StrutsTagAttribute(description="Limit how many results are shown as autocompletion options", defaultValue="30") + @StrutsTagAttribute(description="Limit how many results are shown as autocompletion options, set to -1 for unlimited results", defaultValue="30") public void setResultsLimit(String resultsLimit) { this.resultsLimit = resultsLimit; } + + @StrutsTagAttribute(description="Transport used by Dojo to make the request", defaultValue="XMLHTTPTransport") + public void setTransport(String transport) { + this.transport = transport; + } } diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Bind.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Bind.java index 41da5996e..90c2392bd 100644 --- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Bind.java +++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Bind.java @@ -32,7 +32,7 @@ import com.opensymphony.xwork2.util.ValueStack; /** * *

- * This tag will generated event listeners for multiple events on multiple sources, + * This tag will generate event listeners for multiple events on multiple sources, * making an asynchronous request to the specified href, and updating multiple targets. *

* @@ -304,4 +304,9 @@ public class Bind extends AbstractValidateBean { public void setSeparateScripts(String separateScripts) { this.separateScripts = separateScripts; } + + @StrutsTagAttribute(description="Transport used by Dojo to make the request", defaultValue="XMLHTTPTransport") + public void setTransport(String transport) { + this.transport = transport; + } } 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 52d79bb60..4b44e99db 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 @@ -64,4 +64,6 @@ public interface RemoteBean { void setHighlightDuration(String color); void setSeparateScripts(String separateScripts); + + void setTransport(String transport); } 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 03acab0c9..fb0f5a102 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 @@ -175,6 +175,7 @@ public class Submit extends FormButton implements RemoteBean { protected String validate; protected String ajaxAfterValidation; protected String separateScripts; + protected String transport; public Submit(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { super(stack, request, response); @@ -239,6 +240,8 @@ public class Submit extends FormButton implements RemoteBean { addParameter("highlightDuration", findString(highlightDuration)); if (separateScripts != null) addParameter("separateScripts", findValue(separateScripts, Boolean.class)); + if (transport != null) + addParameter("transport", findString(transport)); Boolean validateValue = false; if (validate != null) { @@ -432,7 +435,7 @@ public class Submit extends FormButton implements RemoteBean { this.validate = validate; } - @StrutsTagAttribute(description = "Make an asynchronous request if validation succeeds. Only valid is 'validate' is 'true'", type="Boolean", + @StrutsTagAttribute(description = "Make an asynchronous request if validation succeeds. Only valid if 'validate' is 'true'", type="Boolean", defaultValue = "false") public void setAjaxAfterValidation(String ajaxAfterValidation) { this.ajaxAfterValidation = ajaxAfterValidation; @@ -447,4 +450,9 @@ public class Submit extends FormButton implements RemoteBean { public void setSeparateScripts(String separateScripts) { this.separateScripts = separateScripts; } + + @StrutsTagAttribute(description="Transport used by Dojo to make the request", defaultValue="XMLHTTPTransport") + public void setTransport(String transport) { + this.transport = transport; + } } 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 a35a543a3..35ef52c22 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 @@ -40,6 +40,7 @@ public abstract class AbstractRemoteTag extends AbstractClosingTag { protected String highlightColor; protected String highlightDuration; protected String separateScripts; + protected String transport; protected void populateParams() { super.populateParams(); @@ -63,6 +64,7 @@ public abstract class AbstractRemoteTag extends AbstractClosingTag { remote.setHighlightColor(highlightColor); remote.setHighlightDuration(highlightDuration); remote.setSeparateScripts(separateScripts); + remote.setTransport(transport); } public void setHref(String href) { @@ -136,4 +138,8 @@ public abstract class AbstractRemoteTag extends AbstractClosingTag { public void setSeparateScripts(String separateScripts) { this.separateScripts = separateScripts; } + + public void setTransport(String transport) { + this.transport = transport; + } } diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTag.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTag.java index f8d5aeb0a..54ac5ce0a 100644 --- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTag.java +++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTag.java @@ -60,6 +60,7 @@ public class AutocompleterTag extends ComboBoxTag { protected String errorNotifyTopics; protected String valueNotifyTopics; protected String resultsLimit; + protected String transport; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new Autocompleter(stack, req, res); @@ -94,6 +95,7 @@ public class AutocompleterTag extends ComboBoxTag { autocompleter.setErrorNotifyTopics(errorNotifyTopics); autocompleter.setValueNotifyTopics(valueNotifyTopics); autocompleter.setResultsLimit(resultsLimit); + autocompleter.setTransport(transport); } public void setAutoComplete(String autoComplete) { @@ -199,4 +201,8 @@ public class AutocompleterTag extends ComboBoxTag { public void setResultsLimit(String resultsLimit) { this.resultsLimit = resultsLimit; } + + public void setTransport(String transport) { + this.transport = transport; + } } 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 b666e3376..0c6556a27 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 @@ -61,6 +61,7 @@ public class SubmitTag extends AbstractUITag { protected String validate; protected String ajaxAfterValidation; protected String separateScripts; + protected String transport; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new Submit(stack, req, res); @@ -95,6 +96,7 @@ public class SubmitTag extends AbstractUITag { submit.setValidate(validate); submit.setAjaxAfterValidation(ajaxAfterValidation); submit.setSeparateScripts(separateScripts); + submit.setTransport(transport); } public void setMethod(String method) { @@ -200,4 +202,8 @@ public class SubmitTag extends AbstractUITag { public void setSeparateScripts(String separateScripts) { this.separateScripts = separateScripts; } + + public void setTransport(String transport) { + this.transport = transport; + } } diff --git a/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/Bind.js b/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/Bind.js index ee9c59190..26ebfde2d 100644 --- a/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/Bind.js +++ b/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/Bind.js @@ -53,6 +53,7 @@ dojo.widget.defineWidget( scriptSeparation : true, //scope for the cript separation scriptScope : null, + transport : "", postCreate : function() { var self = this; @@ -306,6 +307,7 @@ dojo.widget.defineWidget( preventCache: true, formNode: self.formNode, formFilter: window[self.formFilter], + transport: self.transport, handler: function(type, data, e) { dojo.lang.hitch(self, "bindHandler")(type, data, e); }, diff --git a/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/BindDiv.js b/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/BindDiv.js index 4bac37afc..6e778ea7f 100644 --- a/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/BindDiv.js +++ b/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/BindDiv.js @@ -62,6 +62,8 @@ dojo.widget.defineWidget( //only used when inside a tabbedpanel disabled : false, + transport : "", + onDownloadStart : function(event) { if(!this.showLoading) { event.returnValue = false; @@ -257,6 +259,7 @@ dojo.widget.defineWidget( mimetype: "text/html", formNode: dojo.byId(self.formId), formFilter: window[self.formFilter], + transport: self.transport, handler: function(type, data, e) { //hide indicator dojo.html.hide(self.indicator); diff --git a/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/ComboBox.js b/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/ComboBox.js index 7d7311f33..c0dd5b7c0 100644 --- a/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/ComboBox.js +++ b/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/ComboBox.js @@ -17,7 +17,8 @@ struts.widget.ComboBoxDataProvider = function(combobox, node){ this.cbox = combobox; this.formId = this.cbox.formId; this.formFilter = this.cbox.formFilter; - + this.transport = this.cbox.transport; + this.getData = function(/*String*/ url){ //show indicator dojo.html.show(this.cbox.indicator); @@ -26,6 +27,7 @@ struts.widget.ComboBoxDataProvider = function(combobox, node){ url: url, formNode: dojo.byId(this.formId), formFilter: window[this.formFilter], + transport: this.transport, handler: dojo.lang.hitch(this, function(type, data, evt) { //hide indicator dojo.html.hide(this.cbox.indicator); @@ -250,6 +252,8 @@ dojo.widget.defineWidget( //how many results are shown searchLimit : 30, + transport : "", + //from Dojo's ComboBox showResultList: function() { // Our dear friend IE doesnt take max-height so we need to calculate that on our own every time 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 4619ddc8a..afa9a235c 100644 --- a/plugins/dojo/src/main/resources/template/ajax/ajax-common.ftl +++ b/plugins/dojo/src/main/resources/template/ajax/ajax-common.ftl @@ -76,3 +76,6 @@ <#if parameters.separateScripts?exists> scriptSeparation="${parameters.separateScripts?string?html}"<#rt/> + <#if parameters.transport?if_exists != ""> + transport="${parameters.transport?html}"<#rt/> + diff --git a/plugins/dojo/src/main/resources/template/ajax/autocompleter.ftl b/plugins/dojo/src/main/resources/template/ajax/autocompleter.ftl index 09f3090cc..74bc281ff 100644 --- a/plugins/dojo/src/main/resources/template/ajax/autocompleter.ftl +++ b/plugins/dojo/src/main/resources/template/ajax/autocompleter.ftl @@ -107,6 +107,9 @@ <#if parameters.searchLimit?if_exists != ""> searchLimit="${parameters.searchLimit?html}" +<#if parameters.transport?if_exists != ""> + transport="${parameters.transport?html}"<#rt/> + <#include "/${parameters.templateDir}/simple/scripting-events.ftl" /> <#include "/${parameters.templateDir}/simple/common-attributes.ftl" /> <#if parameters.href?exists> diff --git a/plugins/dojo/src/main/resources/template/ajax/bind.ftl b/plugins/dojo/src/main/resources/template/ajax/bind.ftl index 369b205f2..4d8382475 100644 --- a/plugins/dojo/src/main/resources/template/ajax/bind.ftl +++ b/plugins/dojo/src/main/resources/template/ajax/bind.ftl @@ -76,6 +76,9 @@ <#if parameters.separateScripts?exists> "scriptSeparation": ${parameters.separateScripts?string?html},<#rt/> + + <#if parameters.transport?if_exists != ""> + "transport": "${parameters.transport?html}"<#rt/> }); }); 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 e6b0e7577..542cbeacd 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 @@ -53,6 +53,7 @@ public class AnchorTest extends AbstractUITagTest { tag.setValidate("true"); tag.setAjaxAfterValidation("true"); tag.setSeparateScripts("true"); + tag.setTransport("o"); tag.doStartTag(); tag.doEndTag(); diff --git a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTest.java b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTest.java index 84cdd3ad7..58bbfc20b 100644 --- a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTest.java +++ b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTest.java @@ -49,6 +49,7 @@ public class AutocompleterTest extends AbstractUITagTest { tag.setDataFieldName("k"); tag.setValueNotifyTopics("l"); tag.setResultsLimit("2"); + tag.setTransport("m"); 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 5c1e14a1b..7850bb2d2 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 @@ -28,6 +28,7 @@ public class BindTest extends AbstractUITagTest { tag.setHighlightDuration("q"); tag.setValidate("true"); tag.setSeparateScripts("true"); + tag.setTransport("q"); 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 629451c04..2bbfc64cb 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 @@ -55,6 +55,7 @@ public class DivTest extends AbstractUITagTest { tag.setClosable("true"); tag.setHighlightColor("o"); tag.setHighlightDuration("p"); + tag.setTransport("q"); 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 e539ebc9b..591c9e5c0 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 @@ -50,6 +50,7 @@ public class SubmitAjaxTest extends AbstractUITagTest { tag.setAjaxAfterValidation("true"); tag.setSeparateScripts("true"); tag.setTabindex("1"); + tag.setTransport("p"); tag.doStartTag(); tag.doEndTag(); diff --git a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-1.txt b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-1.txt index 9755f13ba..e5634f5b7 100644 --- a/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-1.txt +++ b/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-1.txt @@ -19,4 +19,6 @@ buttonSrc="i" templateCssPath="j" dataFieldName="k" - searchLimit="2"/> + searchLimit="2" + transport="m" +/> 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 141142161..29d824160 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,6 +21,7 @@ "validate": true, "ajaxAfterValidation":false, "scriptSeparation": true, + "transport": "q" }); }); \ 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 bf9d87a34..76b59cc67 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 @@ -21,5 +21,6 @@ showLoading="true" highlightColor="o" highlightDuration="p" - scriptSeparation="false"> + scriptSeparation="false" + transport="q"> 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 a2a059fd9..a5c1e92d5 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 @@ -18,5 +18,6 @@ showLoading="true" highlightColor="m" highlightDuration="n" - scriptSeparation="true"> + scriptSeparation="true" + transport="o"> 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 09aad1df4..0f213042f 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 @@ -22,4 +22,5 @@ highlightColor="n" highlightDuration="o" scriptSeparation="true" + transport="p" />