diff --git a/core/src/main/resources/template/simple/doubleselect.ftl b/core/src/main/resources/template/simple/doubleselect.ftl
index 674680ef1..2a87e30f5 100644
--- a/core/src/main/resources/template/simple/doubleselect.ftl
+++ b/core/src/main/resources/template/simple/doubleselect.ftl
@@ -20,58 +20,99 @@
-->
<#global dynamic_attributes_ignore = "second-"/>
<#include "/${parameters.templateDir}/simple/select.ftl" />
-<#assign startCount = 0/>
+<#assign startCount = 0/><#rt/>
<#if parameters.headerKey?? && parameters.headerValue??>
- <#assign startCount = startCount + 1/>
+ <#assign startCount = startCount + 1/><#rt/>
#if>
<#if parameters.emptyOption??>
- <#assign startCount = startCount + 1/>
+ <#assign startCount = startCount + 1/><#rt/>
#if>
-
- name="${(parameters.doubleName!"")}"<#rt/>
+ name="${(parameters.doubleName!"")}"<#rt/>
<#if parameters.disabled!false>
- disabled="disabled"<#rt/>
+ disabled="disabled"<#rt/>
#if>
<#if parameters.doubleTabindex?has_content>
- tabindex="${parameters.doubleTabindex}"<#rt/>
+ tabindex="${parameters.doubleTabindex}"<#rt/>
#if>
<#if parameters.doubleId?has_content>
- id="${parameters.doubleId}"<#rt/>
+ id="${parameters.doubleId}"<#rt/>
#if>
<#if parameters.doubleCss?has_content>
- class="${parameters.doubleCss}"<#rt/>
+ class="${parameters.doubleCss}"<#rt/>
#if>
<#if parameters.doubleStyle?has_content>
- style="${parameters.doubleStyle}"<#rt/>
+ style="${parameters.doubleStyle}"<#rt/>
#if>
<#if parameters.title?has_content>
- title="${parameters.title}"<#rt/>
+ title="${parameters.title}"<#rt/>
#if>
<#if parameters.multiple!false>
- multiple="multiple"<#rt/>
+ multiple="multiple"<#rt/>
#if>
<#if parameters.get("doubleSize")?has_content>
- size="${parameters.get("doubleSize")}"<#rt/>
+ size="${parameters.get("doubleSize")}"<#rt/>
#if>
<#if parameters.doubleMultiple!false>
- multiple="multiple"<#rt/>
+ multiple="multiple"<#rt/>
#if>
<#if parameters.doubleDisabled!false>
- disabled="disabled"<#rt/>
+ disabled="disabled"<#rt/>
+#if>
+<#if parameters.doubleOnclick??>
+ onclick="<#outputformat 'JavaScript'>${parameters.doubleOnclick}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOndblclick??>
+ ondblclick="<#outputformat 'JavaScript'>${parameters.doubleOndblclick}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnmousedown??>
+ onmousedown="<#outputformat 'JavaScript'>${parameters.doubleOnmousedown}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnmouseup??>
+ onmouseup="<#outputformat 'JavaScript'>${parameters.doubleOnmouseup}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnmouseover??>
+ onmouseover="<#outputformat 'JavaScript'>${parameters.doubleOnmouseover}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnmousemove??>
+ onmousemove="<#outputformat 'JavaScript'>${parameters.doubleOnmousemove}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnmouseout??>
+ onmouseout="<#outputformat 'JavaScript'>${parameters.doubleOnmouseout}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnfocus??>
+ onfocus="<#outputformat 'JavaScript'>${parameters.doubleOnfocus}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnblur??>
+ onblur="<#outputformat 'JavaScript'>${parameters.doubleOnblur}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnkeypress??>
+ onkeypress="<#outputformat 'JavaScript'>${parameters.doubleOnkeypress}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnkeydown??>
+ onkeydown="<#outputformat 'JavaScript'>${parameters.doubleOnkeydown}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnkeyup??>
+ onkeyup="<#outputformat 'JavaScript'>${parameters.doubleOnkeyup}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnselect??>
+ onselect="<#outputformat 'JavaScript'>${parameters.doubleOnselect}#outputformat>"<#rt/>
+#if>
+<#if parameters.doubleOnchange??>
+ onchange="<#outputformat 'JavaScript'>${parameters.doubleOnchange}#outputformat>"<#rt/>
#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/prefixed-dynamic-attributes.ftl" />
<@prefixedDynamicAttributes prefix="second-"/>
- >
+>
<#if parameters.doubleMultiple!false>
-
- <#if parameters.doubleDisabled!false>
- disabled="disabled"<#rt/>
- #if>
- />
+
+ name="__multiselect_${(parameters.doubleName!"")}" value=""<#rt/>
+<#if parameters.doubleDisabled!false>
+ disabled="disabled"<#rt/>
+#if>
+/><#rt/>
#if>
<@s.script type="text/javascript">
<#assign itemCount = startCount/>
diff --git a/core/src/main/resources/template/simple/select.ftl b/core/src/main/resources/template/simple/select.ftl
index 7e90c8045..c10633e5e 100644
--- a/core/src/main/resources/template/simple/select.ftl
+++ b/core/src/main/resources/template/simple/select.ftl
@@ -45,9 +45,9 @@
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
>
<#if parameters.headerKey?? && parameters.headerValue??>
-
<#if tag.contains(parameters.nameValue, parameters.headerKey) == true>
- selected="selected"
+ selected="selected"<#rt/>
#if>
>${parameters.headerValue}
#if>
@@ -121,9 +121,7 @@
#if>
>${itemValue}<#lt/>
@s.iterator>
-
<#include "/${parameters.templateDir}/${parameters.expandTheme}/optgroup.ftl" />
-
<#if parameters.multiple!false>
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleSelectTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleSelectTest.java
index ce40fa5ca..d073811a4 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleSelectTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleSelectTest.java
@@ -37,7 +37,7 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region antwerp = new Region("Antwerp", "AN");
Region gent = new Region("Gent", "GN");
Region brugge = new Region("Brugge", "BRG");
- ArrayList belgiumRegions = new ArrayList();
+ List belgiumRegions = new ArrayList<>();
belgiumRegions.add(antwerp);
belgiumRegions.add(gent);
belgiumRegions.add(brugge);
@@ -45,16 +45,16 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region paris = new Region("Paris", "PA");
Region bordeaux = new Region("Bordeaux", "BOR");
- ArrayList franceRegions = new ArrayList();
+ List franceRegions = new ArrayList<>();
franceRegions.add(paris);
franceRegions.add(bordeaux);
Country france = new Country("France", "FR", franceRegions);
- Collection collection = new ArrayList(2);
+ Collection collection = new ArrayList<>(2);
collection.add("AN");
testAction.setCollection(collection);
- List countries = new ArrayList();
+ List countries = new ArrayList<>();
countries.add(belgium);
countries.add(france);
@@ -103,13 +103,13 @@ public class DoubleSelectTest extends AbstractUITagTest {
strutsBodyTagsAreReflectionEqual(tag, freshTag));
}
- public void testDouble_clearTagStateSet() throws Exception {
+ public void testDoubleJavaScriptEvents() throws Exception {
TestAction testAction = (TestAction) action;
Region antwerp = new Region("Antwerp", "AN");
Region gent = new Region("Gent", "GN");
Region brugge = new Region("Brugge", "BRG");
- ArrayList belgiumRegions = new ArrayList();
+ List belgiumRegions = new ArrayList<>();
belgiumRegions.add(antwerp);
belgiumRegions.add(gent);
belgiumRegions.add(brugge);
@@ -117,16 +117,90 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region paris = new Region("Paris", "PA");
Region bordeaux = new Region("Bordeaux", "BOR");
- ArrayList franceRegions = new ArrayList();
+ List franceRegions = new ArrayList<>();
franceRegions.add(paris);
franceRegions.add(bordeaux);
Country france = new Country("France", "FR", franceRegions);
- Collection collection = new ArrayList(2);
+ Collection collection = new ArrayList<>(2);
collection.add("AN");
testAction.setCollection(collection);
- List countries = new ArrayList();
+ List countries = new ArrayList<>();
+ countries.add(belgium);
+ countries.add(france);
+
+ testAction.setList2(countries);
+
+ DoubleSelectTag tag = new DoubleSelectTag();
+ tag.setPageContext(pageContext);
+ tag.setTheme("simple");
+ tag.setLabel("mylabel");
+ tag.setName("foo");
+ tag.setDoubleName("region");
+
+ tag.setList("list2");
+ tag.setDoubleList("regions");
+
+ tag.setListKey("iso");
+ tag.setDoubleListKey("key");
+ tag.setListValue("name");
+ tag.setDoubleListValue("name");
+
+ tag.setFormName("inputForm");
+
+ tag.setDoubleOnclick("testMe()");
+ tag.setDoubleOndblclick("testMe()");
+ tag.setDoubleOnmousedown("testMe()");
+ tag.setDoubleOnmouseup("testMe()");
+ tag.setDoubleOnmouseover("testMe()");
+ tag.setDoubleOnmousemove("testMe()");
+ tag.setDoubleOnmouseout("testMe()");
+ tag.setDoubleOnfocus("testMe()");
+ tag.setDoubleOnblur("testMe()");
+ tag.setDoubleOnkeypress("testMe()");
+ tag.setDoubleOnkeydown("testMe()");
+ tag.setDoubleOnkeyup("testMe()");
+ tag.setDoubleOnselect("testMe()");
+ tag.setDoubleOnchange("testMe()");
+
+ tag.doStartTag();
+ tag.doEndTag();
+
+ verify(SelectTag.class.getResource("DoubleSelect-6.txt"));
+
+ // Basic sanity check of clearTagStateForTagPoolingServers() behaviour for Struts Tags after doEndTag().
+ DoubleSelectTag freshTag = new DoubleSelectTag();
+ freshTag.setPageContext(pageContext);
+ assertFalse("Tag state after doEndTag() under default tag clear state is equal to new Tag with pageContext/parent set. " +
+ "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.",
+ strutsBodyTagsAreReflectionEqual(tag, freshTag));
+ }
+
+ public void testDouble_clearTagStateSet() throws Exception {
+ TestAction testAction = (TestAction) action;
+
+ Region antwerp = new Region("Antwerp", "AN");
+ Region gent = new Region("Gent", "GN");
+ Region brugge = new Region("Brugge", "BRG");
+ List belgiumRegions = new ArrayList<>();
+ belgiumRegions.add(antwerp);
+ belgiumRegions.add(gent);
+ belgiumRegions.add(brugge);
+ Country belgium = new Country("Belgium", "BE", belgiumRegions);
+
+ Region paris = new Region("Paris", "PA");
+ Region bordeaux = new Region("Bordeaux", "BOR");
+ ArrayList franceRegions = new ArrayList<>();
+ franceRegions.add(paris);
+ franceRegions.add(bordeaux);
+ Country france = new Country("France", "FR", franceRegions);
+
+ Collection collection = new ArrayList<>(2);
+ collection.add("AN");
+ testAction.setCollection(collection);
+
+ List countries = new ArrayList<>();
countries.add(belgium);
countries.add(france);
@@ -178,13 +252,13 @@ public class DoubleSelectTest extends AbstractUITagTest {
strutsBodyTagsAreReflectionEqual(tag, freshTag));
}
- public void testOnchange() throws Exception {
+ public void testDoubleJavaScriptEvents_clearTagStateSet() throws Exception {
TestAction testAction = (TestAction) action;
Region antwerp = new Region("Antwerp", "AN");
Region gent = new Region("Gent", "GN");
Region brugge = new Region("Brugge", "BRG");
- ArrayList belgiumRegions = new ArrayList();
+ List belgiumRegions = new ArrayList<>();
belgiumRegions.add(antwerp);
belgiumRegions.add(gent);
belgiumRegions.add(brugge);
@@ -192,16 +266,93 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region paris = new Region("Paris", "PA");
Region bordeaux = new Region("Bordeaux", "BOR");
- ArrayList franceRegions = new ArrayList();
+ ArrayList franceRegions = new ArrayList<>();
franceRegions.add(paris);
franceRegions.add(bordeaux);
Country france = new Country("France", "FR", franceRegions);
- Collection collection = new ArrayList(2);
+ Collection collection = new ArrayList<>(2);
collection.add("AN");
testAction.setCollection(collection);
- List countries = new ArrayList();
+ List countries = new ArrayList<>();
+ countries.add(belgium);
+ countries.add(france);
+
+ testAction.setList2(countries);
+
+ DoubleSelectTag tag = new DoubleSelectTag();
+ tag.setPerformClearTagStateForTagPoolingServers(true); // Explicitly request tag state clearing.
+ tag.setPageContext(pageContext);
+ tag.setTheme("simple");
+ tag.setLabel("mylabel");
+ tag.setName("foo");
+ tag.setDoubleName("region");
+
+ tag.setList("list2");
+ tag.setDoubleList("regions");
+
+ tag.setListKey("iso");
+ tag.setDoubleListKey("key");
+ tag.setListValue("name");
+ tag.setDoubleListValue("name");
+
+ tag.setFormName("inputForm");
+
+ tag.setDoubleOnclick("testMe()");
+ tag.setDoubleOndblclick("testMe()");
+ tag.setDoubleOnmousedown("testMe()");
+ tag.setDoubleOnmouseup("testMe()");
+ tag.setDoubleOnmouseover("testMe()");
+ tag.setDoubleOnmousemove("testMe()");
+ tag.setDoubleOnmouseout("testMe()");
+ tag.setDoubleOnfocus("testMe()");
+ tag.setDoubleOnblur("testMe()");
+ tag.setDoubleOnkeypress("testMe()");
+ tag.setDoubleOnkeydown("testMe()");
+ tag.setDoubleOnkeyup("testMe()");
+ tag.setDoubleOnselect("testMe()");
+ tag.setDoubleOnchange("testMe()");
+
+ tag.doStartTag();
+ setComponentTagClearTagState(tag, true); // Ensure component tag state clearing is set true (to match tag).
+ tag.doEndTag();
+
+ verify(SelectTag.class.getResource("DoubleSelect-6.txt"));
+
+ // Basic sanity check of clearTagStateForTagPoolingServers() behaviour for Struts Tags after doEndTag().
+ DoubleSelectTag freshTag = new DoubleSelectTag();
+ freshTag.setPerformClearTagStateForTagPoolingServers(true);
+ freshTag.setPageContext(pageContext);
+ assertTrue("Tag state after doEndTag() and explicit tag state clearing is inequal to new Tag with pageContext/parent set. " +
+ "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.",
+ strutsBodyTagsAreReflectionEqual(tag, freshTag));
+ }
+
+ public void testOnchange() throws Exception {
+ TestAction testAction = (TestAction) action;
+
+ Region antwerp = new Region("Antwerp", "AN");
+ Region gent = new Region("Gent", "GN");
+ Region brugge = new Region("Brugge", "BRG");
+ List belgiumRegions = new ArrayList<>();
+ belgiumRegions.add(antwerp);
+ belgiumRegions.add(gent);
+ belgiumRegions.add(brugge);
+ Country belgium = new Country("Belgium", "BE", belgiumRegions);
+
+ Region paris = new Region("Paris", "PA");
+ Region bordeaux = new Region("Bordeaux", "BOR");
+ List franceRegions = new ArrayList<>();
+ franceRegions.add(paris);
+ franceRegions.add(bordeaux);
+ Country france = new Country("France", "FR", franceRegions);
+
+ Collection collection = new ArrayList<>(2);
+ collection.add("AN");
+ testAction.setCollection(collection);
+
+ List countries = new ArrayList<>();
countries.add(belgium);
countries.add(france);
@@ -255,7 +406,7 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region antwerp = new Region("Antwerp", "AN");
Region gent = new Region("Gent", "GN");
Region brugge = new Region("Brugge", "BRG");
- ArrayList belgiumRegions = new ArrayList();
+ List belgiumRegions = new ArrayList<>();
belgiumRegions.add(antwerp);
belgiumRegions.add(gent);
belgiumRegions.add(brugge);
@@ -263,16 +414,16 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region paris = new Region("Paris", "PA");
Region bordeaux = new Region("Bordeaux", "BOR");
- ArrayList franceRegions = new ArrayList();
+ List franceRegions = new ArrayList<>();
franceRegions.add(paris);
franceRegions.add(bordeaux);
Country france = new Country("France", "FR", franceRegions);
- Collection collection = new ArrayList(2);
+ Collection collection = new ArrayList<>(2);
collection.add("AN");
testAction.setCollection(collection);
- List countries = new ArrayList();
+ List countries = new ArrayList<>();
countries.add(belgium);
countries.add(france);
@@ -330,7 +481,7 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region antwerp = new Region("Antwerp", "AN");
Region gent = new Region("Gent", "GN");
Region brugge = new Region("Brugge", "BRG");
- ArrayList belgiumRegions = new ArrayList();
+ List belgiumRegions = new ArrayList<>();
belgiumRegions.add(antwerp);
belgiumRegions.add(gent);
belgiumRegions.add(brugge);
@@ -338,16 +489,16 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region paris = new Region("Paris", "PA");
Region bordeaux = new Region("Bordeaux", "BOR");
- ArrayList franceRegions = new ArrayList();
+ List franceRegions = new ArrayList<>();
franceRegions.add(paris);
franceRegions.add(bordeaux);
Country france = new Country("France", "FR", franceRegions);
- Collection collection = new ArrayList(2);
+ Collection collection = new ArrayList<>(2);
collection.add("AN");
testAction.setCollection(collection);
- List countries = new ArrayList();
+ List countries = new ArrayList<>();
countries.add(belgium);
countries.add(france);
@@ -398,7 +549,7 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region antwerp = new Region("Antwerp", "AN");
Region gent = new Region("Gent", "GN");
Region brugge = new Region("Brugge", "BRG");
- ArrayList belgiumRegions = new ArrayList();
+ List belgiumRegions = new ArrayList<>();
belgiumRegions.add(antwerp);
belgiumRegions.add(gent);
belgiumRegions.add(brugge);
@@ -406,16 +557,16 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region paris = new Region("Paris", "PA");
Region bordeaux = new Region("Bordeaux", "BOR");
- ArrayList franceRegions = new ArrayList();
+ List franceRegions = new ArrayList<>();
franceRegions.add(paris);
franceRegions.add(bordeaux);
Country france = new Country("France", "FR", franceRegions);
- Collection collection = new ArrayList(2);
+ Collection collection = new ArrayList<>(2);
collection.add("AN");
testAction.setCollection(collection);
- List countries = new ArrayList();
+ List countries = new ArrayList<>();
countries.add(belgium);
countries.add(france);
@@ -468,7 +619,7 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region antwerp = new Region("Antwerp", "AN");
Region gent = new Region("Gent", "GN");
Region brugge = new Region("Brugge", "BRG");
- ArrayList belgiumRegions = new ArrayList();
+ List belgiumRegions = new ArrayList<>();
belgiumRegions.add(antwerp);
belgiumRegions.add(gent);
belgiumRegions.add(brugge);
@@ -476,16 +627,16 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region paris = new Region("Paris", "PA");
Region bordeaux = new Region("Bordeaux", "BOR");
- ArrayList franceRegions = new ArrayList();
+ List franceRegions = new ArrayList<>();
franceRegions.add(paris);
franceRegions.add(bordeaux);
Country france = new Country("France", "FR", franceRegions);
- Collection collection = new ArrayList(2);
+ Collection collection = new ArrayList<>(2);
collection.add("AN");
testAction.setCollection(collection);
- List countries = new ArrayList();
+ List countries = new ArrayList<>();
countries.add(belgium);
countries.add(france);
@@ -532,7 +683,7 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region antwerp = new Region("Antwerp", "AN");
Region gent = new Region("Gent", "GN");
Region brugge = new Region("Brugge", "BRG");
- ArrayList belgiumRegions = new ArrayList();
+ List belgiumRegions = new ArrayList<>();
belgiumRegions.add(antwerp);
belgiumRegions.add(gent);
belgiumRegions.add(brugge);
@@ -540,16 +691,16 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region paris = new Region("Paris", "PA");
Region bordeaux = new Region("Bordeaux", "BOR");
- ArrayList franceRegions = new ArrayList();
+ List franceRegions = new ArrayList<>();
franceRegions.add(paris);
franceRegions.add(bordeaux);
Country france = new Country("France", "FR", franceRegions);
- Collection collection = new ArrayList(2);
+ Collection collection = new ArrayList<>(2);
collection.add("AN");
testAction.setCollection(collection);
- List countries = new ArrayList();
+ List countries = new ArrayList<>();
countries.add(belgium);
countries.add(france);
@@ -619,7 +770,7 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region antwerp = new Region("Antwerp", "AN");
Region gent = new Region("Gent", "GN");
Region brugge = new Region("Brugge", "BRG");
- ArrayList belgiumRegions = new ArrayList();
+ List belgiumRegions = new ArrayList<>();
belgiumRegions.add(antwerp);
belgiumRegions.add(gent);
belgiumRegions.add(brugge);
@@ -627,18 +778,18 @@ public class DoubleSelectTest extends AbstractUITagTest {
Region paris = new Region("Paris", "PA");
Region bordeaux = new Region("Bordeaux", "BOR");
- ArrayList franceRegions = new ArrayList();
+ List franceRegions = new ArrayList<>();
franceRegions.add(paris);
franceRegions.add(bordeaux);
Country france = new Country("France", "FR", franceRegions);
- Collection collection = new ArrayList(2);
+ Collection collection = new ArrayList<>(2);
collection.add("AN");
testAction.setCollection(collection);
tag.setList("collection");
- List countries = new ArrayList();
+ List countries = new ArrayList<>();
countries.add(belgium);
countries.add(france);
@@ -659,12 +810,12 @@ public class DoubleSelectTest extends AbstractUITagTest {
tag.setFormName("inputForm");
}
- public class Country {
+ public static class Country {
String name;
String iso;
- Collection regions;
+ Collection regions;
- public Country(String name, String iso, Collection regions) {
+ public Country(String name, String iso, Collection regions) {
this.name = name;
this.iso = iso;
this.regions = regions;
@@ -678,12 +829,12 @@ public class DoubleSelectTest extends AbstractUITagTest {
return iso;
}
- public Collection getRegions() {
+ public Collection getRegions() {
return regions;
}
}
- public class Region {
+ public static class Region {
String name;
String key;
diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleSelect-6.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleSelect-6.txt
new file mode 100644
index 000000000..a0a51aa49
--- /dev/null
+++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleSelect-6.txt
@@ -0,0 +1,42 @@
+
+
+
+
+