craigmcc 02/03/11 21:36:18
Modified: src/share/org/apache/struts/taglib/logic Tag:
STRUTS_1_0_BRANCH IterateTag.java
web/exercise-taglib Tag: STRUTS_1_0_BRANCH logic-iterate.jsp
Log:
Port fix for <logic:iterate> to iterate over arrays of primitives.
PR: Bugzilla #6553
Submitted by: Martin Rose <martin.rose at gsullivan.com>
Revision Changes Path
No revision
No revision
1.11.2.2 +15 -9
jakarta-struts/src/share/org/apache/struts/taglib/logic/IterateTag.java
Index: IterateTag.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/logic/IterateTag.java,v
retrieving revision 1.11.2.1
retrieving revision 1.11.2.2
diff -u -r1.11.2.1 -r1.11.2.2
--- IterateTag.java 14 Jun 2001 04:24:27 -0000 1.11.2.1
+++ IterateTag.java 12 Mar 2002 05:36:18 -0000 1.11.2.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/logic/IterateTag.java,v
1.11.2.1 2001/06/14 04:24:27 martinc Exp $
- * $Revision: 1.11.2.1 $
- * $Date: 2001/06/14 04:24:27 $
+ * $Header:
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/logic/IterateTag.java,v
1.11.2.2 2002/03/12 05:36:18 craigmcc Exp $
+ * $Revision: 1.11.2.2 $
+ * $Date: 2002/03/12 05:36:18 $
*
* ====================================================================
*
@@ -63,7 +63,8 @@
package org.apache.struts.taglib.logic;
-import java.util.Arrays;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
@@ -88,7 +89,7 @@
* or a Map (which includes Hashtables) whose elements will be iterated over.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.11.2.1 $ $Date: 2001/06/14 04:24:27 $
+ * @version $Revision: 1.11.2.2 $ $Date: 2002/03/12 05:36:18 $
*/
public class IterateTag extends BodyTagSupport {
@@ -310,15 +311,20 @@
// Construct an iterator for this collection
- if (collection.getClass().isArray())
- collection = Arrays.asList((Object[]) collection);
- if (collection instanceof Collection)
+ if (collection.getClass().isArray()) {
+ int length = Array.getLength(collection);
+ ArrayList c = new ArrayList(length);
+ for (int i = 0; i < length; i++) {
+ c.add(Array.get(collection, i));
+ }
+ iterator = c.iterator();
+ } else if (collection instanceof Collection)
iterator = ((Collection) collection).iterator();
else if (collection instanceof Iterator)
iterator = (Iterator) collection;
else if (collection instanceof Map)
iterator = ((Map) collection).entrySet().iterator();
- else if (collection instanceof Enumeration)
+ else if (collection instanceof Enumeration)
iterator = new IteratorAdapter((Enumeration)collection);
else {
JspException e = new JspException
No revision
No revision
1.3.2.2 +31 -0 jakarta-struts/web/exercise-taglib/logic-iterate.jsp
Index: logic-iterate.jsp
===================================================================
RCS file: /home/cvs/jakarta-struts/web/exercise-taglib/logic-iterate.jsp,v
retrieving revision 1.3.2.1
retrieving revision 1.3.2.2
diff -u -r1.3.2.1 -r1.3.2.2
--- logic-iterate.jsp 15 Jun 2001 21:48:46 -0000 1.3.2.1
+++ logic-iterate.jsp 12 Mar 2002 05:36:18 -0000 1.3.2.2
@@ -16,6 +16,11 @@
list.add("Fourth");
list.add("Fifth");
pageContext.setAttribute("list", list, PageContext.PAGE_SCOPE);
+
+
+ int intArray[] = new int[]
+ { 0, 10, 20, 30, 40 };
+ pageContext.setAttribute("intArray", intArray, PageContext.PAGE_SCOPE);
}
%>
@@ -83,6 +88,32 @@
<ol>
<logic:iterate id="item" name="list" indexId="index"
offset="2" length="3">
+ <li><em><bean:write name="item"/></em> [<bean:write name="index"/>]</li>
+</logic:iterate>
+</ol>
+
+<h3>Test 8 - Iterate Over an int array</h3>
+
+<ol>
+<logic:iterate id="item" name="intArray" indexId="index">
+ <li><em><bean:write name="item"/></em> [<bean:write name="index"/>]</li>
+</logic:iterate>
+</ol>
+
+<h3>Test 9 - Iterate Over an int array [0..2]</h3>
+
+<ol>
+<logic:iterate id="item" name="intArray" indexId="index"
+ length="3">
+ <li><em><bean:write name="item"/></em> [<bean:write name="index"/>]</li>
+</logic:iterate>
+</ol>
+
+<h3>Test 10 - Iterate Over an int array [2..4]</h3>
+
+<ol>
+<logic:iterate id="item" name="intArray" indexId="index"
+ offset="2" length="3">
<li><em><bean:write name="item"/></em> [<bean:write name="index"/>]</li>
</logic:iterate>
</ol>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>