Author: nilsga
Date: Sat Apr 25 06:07:58 2009
New Revision: 768476
URL: http://svn.apache.org/viewvc?rev=768476&view=rev
Log:
WW-2863 Appending the user's 'onchange' to the default.
Added:
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleSelect-4.txt
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleSelectTest.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java?rev=768476&r1=768475&r2=768476&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java
Sat Apr 25 06:07:58 2009
@@ -24,6 +24,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.lang.xwork.StringUtils;
import org.apache.struts2.views.annotations.StrutsTag;
import com.opensymphony.xwork2.util.ValueStack;
@@ -59,8 +60,12 @@
public void evaluateExtraParams() {
super.evaluateExtraParams();
-
+ StringBuilder onchangeParam = new StringBuilder();
+
onchangeParam.append(getParameters().get("id")).append("Redirect(this.options.selectedIndex)");
+ if(StringUtils.isNotEmpty(this.onchange)) {
+ onchangeParam.append(";").append(this.onchange);
+ }
// force the onchange parameter
- addParameter("onchange", getParameters().get("id") +
"Redirect(this.options.selectedIndex)");
+ addParameter("onchange", onchangeParam.toString());
}
}
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleSelectTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleSelectTest.java?rev=768476&r1=768475&r2=768476&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleSelectTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleSelectTest.java
Sat Apr 25 06:07:58 2009
@@ -96,6 +96,70 @@
verify(SelectTag.class.getResource("DoubleSelect-1.txt"));
}
+
+ 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");
+ ArrayList 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);
+
+ testAction.setList2(countries);
+
+ DoubleSelectTag tag = new DoubleSelectTag();
+ tag.setPageContext(pageContext);
+ 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.setOnmousedown("window.status='onmousedown';");
+ tag.setOnmousemove("window.status='onmousemove';");
+ tag.setOnmouseout("window.status='onmouseout';");
+ tag.setOnmouseover("window.status='onmouseover';");
+ tag.setOnmouseup("window.status='onmouseup';");
+ tag.setOnchange("window.status='onchange';");
+
+ //css style and class
+ tag.setCssClass("c1");
+ tag.setCssStyle("s1");
+ tag.setDoubleCssClass("c2");
+ tag.setDoubleCssStyle("s2");
+
+ tag.doStartTag();
+ tag.doEndTag();
+
+ verify(SelectTag.class.getResource("DoubleSelect-4.txt"));
+ }
public void testDoubleWithDefaultSelectedValues() throws Exception {
Added:
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleSelect-4.txt
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleSelect-4.txt?rev=768476&view=auto
==============================================================================
---
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleSelect-4.txt
(added)
+++
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleSelect-4.txt
Sat Apr 25 06:07:58 2009
@@ -0,0 +1,41 @@
+<tr>
+ <td class="tdLabel"><label for="foo" class="label">mylabel:</label></td>
+ <td>
+<select name="foo" id="foo" class="c1" style="s1"
onmousedown="window.status='onmousedown';"
onmouseup="window.status='onmouseup';"
onmouseover="window.status='onmouseover';"
onmousemove="window.status='onmousemove';"
onmouseout="window.status='onmouseout';"
onchange="fooRedirect(this.options.selectedIndex);window.status='onchange';">
+ <option value="BE">Belgium</option>
+ <option value="FR">France</option>
+</select>
+<br/>
+<select name="region" id="region" class="c2" style="s2">
+</select>
+<script type="text/javascript">
+ var fooGroup = new Array(2 + 0);
+ for (i = 0; i < (2 + 0); i++)
+ fooGroup[i] = new Array();
+
+ fooGroup[0][0] = new Option("Antwerp", "AN");
+ fooGroup[0][1] = new Option("Gent", "GN");
+ fooGroup[0][2] = new Option("Brugge", "BRG");
+ fooGroup[1][0] = new Option("Paris", "PA");
+ fooGroup[1][1] = new Option("Bordeaux", "BOR");
+
+ var fooTemp = document.inputForm.region;
+ fooRedirect(0);
+
+ function fooRedirect(x) {
+ var selected = false;
+ for (m = fooTemp.options.length - 1; m >= 0; m--) {
+ fooTemp.options[m] = null;
+ }
+
+ for (i = 0; i < fooGroup[x].length; i++) {
+ fooTemp.options[i] = new Option(fooGroup[x][i].text,
fooGroup[x][i].value);
+ }
+
+ if ((fooTemp.options.length > 0) && (! selected)) {
+ fooTemp.options[0].selected = true;
+ }
+ }
+</script>
+ </td>
+</tr>