You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by rg...@apache.org on 2007/02/20 23:35:32 UTC

svn commit: r509780 - in /struts/struts2/trunk/core/src: main/java/org/apache/struts2/util/ main/resources/template/simple/ test/java/org/apache/struts2/views/jsp/ui/ test/resources/org/apache/struts2/views/jsp/ui/

Author: rgielen
Date: Tue Feb 20 14:35:31 2007
New Revision: 509780

URL: http://svn.apache.org/viewvc?view=rev&rev=509780
Log:
WW-1747 / WW-1711:
Working with real types rather than String representations as long as possible should fix both issues with select tag.
Additional test added and verified.

Added:
    struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Select-12.txt
Modified:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ContainUtil.java
    struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl
    struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SelectTest.java

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ContainUtil.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ContainUtil.java?view=diff&rev=509780&r1=509779&r2=509780
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ContainUtil.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ContainUtil.java Tue Feb 20 14:35:31 2007
@@ -80,7 +80,7 @@
                 return true;
             }
         } else if (obj1 instanceof Collection) {
-            if (((Collection) obj1).contains(obj2)) {
+            if (((Collection) obj1).contains(obj2) || ((Collection) obj1).contains(obj2.toString())) {
                 //log.debug("obj1 is a collection and contains obj2");
                 return true;
             }

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl?view=diff&rev=509780&r1=509779&r2=509780
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl Tue Feb 20 14:35:31 2007
@@ -39,13 +39,13 @@
 </#if>
 <@s.iterator value="parameters.list">
         <#if parameters.listKey?exists>
-            <#if stack.findString(parameters.listKey)?exists>
-              <#assign itemKey = stack.findString(parameters.listKey).toString()/>
+            <#if stack.findValue(parameters.listKey)?exists>
+              <#assign itemKey = stack.findValue(parameters.listKey)/>
             <#else>
               <#assign itemKey = ''/>
             </#if>
         <#else>
-            <#assign itemKey = stack.findValue('top').toString()/>
+            <#assign itemKey = stack.findValue('top')/>
         </#if>
         <#if parameters.listValue?exists>
             <#if stack.findString(parameters.listValue)?exists>
@@ -57,7 +57,7 @@
             <#assign itemValue = stack.findString('top')/>
         </#if>
     <option value="${itemKey?html}"<#rt/>
-        <#if tag.contains(parameters.nameValue, itemKey) == true || (parameters.nameValue?exists && parameters.nameValue?string == itemKey)>
+        <#if tag.contains(parameters.nameValue, itemKey) == true || (parameters.nameValue?exists && parameters.nameValue?string == itemKey?string)>
  selected="selected"<#rt/>
         </#if>
     >${itemValue?html}</option><#lt/>

Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SelectTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SelectTest.java?view=diff&rev=509780&r1=509779&r2=509780
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SelectTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SelectTest.java Tue Feb 20 14:35:31 2007
@@ -170,6 +170,33 @@
         }
     }
 
+    public class LongObject {
+        private Long id;
+        private String value;
+
+
+        public LongObject(Long id, String value) {
+            this.id = id;
+            this.value = value;
+        }
+
+        public Long getId() {
+            return id;
+        }
+
+        public void setId(Long id) {
+            this.id = id;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+    }
+
     public void testNullList() throws Exception {
         TestAction testAction = (TestAction) action;
         testAction.setList2(null);
@@ -237,6 +264,44 @@
         tag.doEndTag();
 
         verify(SelectTag.class.getResource("Select-2.txt"));
+    }
+
+    /**
+     * WW-1747 - should be a valid test case for the described issue
+     * @throws Exception
+     */
+    public void testMultipleWithLists() throws Exception {
+        TestAction testAction = (TestAction) action;
+        Collection collection = new ArrayList(2);
+
+        collection.add(1l);
+        collection.add(3l);
+        testAction.setCollection(collection);
+
+        List selectList = new ArrayList();
+        selectList.add(new LongObject(1l, "foo"));
+        selectList.add(new LongObject(2l, "bar"));
+        selectList.add(new LongObject(3l, "foobar"));
+        testAction.setList2(selectList);
+
+        SelectTag tag = new SelectTag();
+        tag.setPageContext(pageContext);
+        tag.setLabel("mylabel");
+        tag.setName("collection");
+        tag.setList("list2");
+        tag.setListKey("id");
+        tag.setListValue("value");
+        tag.setMultiple("true");
+        tag.setOnmousedown("alert('onmousedown');");
+        tag.setOnmousemove("alert('onmousemove');");
+        tag.setOnmouseout("alert('onmouseout');");
+        tag.setOnmouseover("alert('onmouseover');");
+        tag.setOnmouseup("alert('onmouseup');");
+
+        tag.doStartTag();
+        tag.doEndTag();
+
+        verify(SelectTag.class.getResource("Select-12.txt"));
     }
 
     public void testSimple() throws Exception {

Added: struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Select-12.txt
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Select-12.txt?view=auto&rev=509780
==============================================================================
--- struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Select-12.txt (added)
+++ struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Select-12.txt Tue Feb 20 14:35:31 2007
@@ -0,0 +1,8 @@
+<tr>
+    <td class="tdLabel"><label for="collection" class="label">mylabel:</label></td>
+    <td><select name="collection" id="collection" multiple="multiple" onmousedown="alert('onmousedown');" onmouseup="alert('onmouseup');" onmouseover="alert('onmouseover');" onmousemove="alert('onmousemove');" onmouseout="alert('onmouseout');">
+    <option value="1" selected="selected">foo</option>
+    <option value="2">bar</option>
+    <option value="3" selected="selected">foobar</option>
+</select></td>
+</tr>