Revision: 560
          http://svn.sourceforge.net/stripes/?rev=560&view=rev
Author:   bengunter
Date:     2007-05-28 22:01:29 -0700 (Mon, 28 May 2007)

Log Message:
-----------
support Collections and arrays as parameter values

Modified Paths:
--------------
    trunk/stripes/src/net/sourceforge/stripes/tag/LinkTagSupport.java

Modified: trunk/stripes/src/net/sourceforge/stripes/tag/LinkTagSupport.java
===================================================================
--- trunk/stripes/src/net/sourceforge/stripes/tag/LinkTagSupport.java   
2007-05-29 03:57:53 UTC (rev 559)
+++ trunk/stripes/src/net/sourceforge/stripes/tag/LinkTagSupport.java   
2007-05-29 05:01:29 UTC (rev 560)
@@ -14,6 +14,7 @@
  */
 package net.sourceforge.stripes.tag;
 
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -26,6 +27,7 @@
 import net.sourceforge.stripes.exception.StripesJspException;
 import net.sourceforge.stripes.format.Formatter;
 import net.sourceforge.stripes.format.FormatterFactory;
+import net.sourceforge.stripes.util.CollectionUtil;
 import net.sourceforge.stripes.util.UrlBuilder;
 
 /**
@@ -180,7 +182,25 @@
         // format parameters before appending to URL
         Map<String, Object> parameters = new HashMap<String, 
Object>(this.parameters);
         for (Entry<String, Object> entry : parameters.entrySet()) {
-            entry.setValue(format(entry.getValue()));
+            Object value = entry.getValue();
+            if (value != null && value.getClass().isArray()) {
+                Object[] raw = CollectionUtil.asObjectArray(value);
+                String[] formatted = new String[raw.length];
+                for (int i = 0; i < raw.length; i++)
+                    formatted[i] = format(raw[i]);
+                value = formatted;
+            }
+            else if (value instanceof Collection) {
+                String[] formatted = new String[((Collection) value).size()];
+                int index = 0;
+                for (Object o : ((Collection) value))
+                    formatted[index++] = format(o);
+                value = formatted;
+            }
+            else {
+                value = format(value);
+            }
+            entry.setValue(value);
         }
         builder.addParameters(parameters);
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development

Reply via email to