Author: nbubna
Date: Tue Nov 21 09:31:28 2006
New Revision: 477766
URL: http://svn.apache.org/viewvc?view=rev&rev=477766
Log:
add ability to add a map of parameters to a link (thanks to Mark Brunkhart)
Modified:
jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java
Modified:
jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java
URL:
http://svn.apache.org/viewvc/jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java?view=diff&rev=477766&r1=477765&r2=477766
==============================================================================
---
jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java
(original)
+++
jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java
Tue Nov 21 09:31:28 2006
@@ -20,7 +20,9 @@
import java.lang.reflect.Method;
import java.net.URLEncoder;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
@@ -169,6 +171,37 @@
/**
* For internal use.
*
+ * Copies 'that' LinkTool into this one and adds the new query data.
+ *
+ * @param queryData the query parameters to add
+ * @since VelocityTools 1.3
+ */
+ protected LinkTool copyWith(Map queryData)
+ {
+ LinkTool copy = duplicate();
+ if (copy.queryData != null)
+ {
+ // set the copy's query data to a shallow clone of
+ // the current query data array
+ copy.queryData = (ArrayList)this.queryData.clone();
+ }
+ else
+ {
+ copy.queryData = new ArrayList();
+ }
+ for (Iterator i = queryData.keySet().iterator(); i.hasNext(); )
+ {
+ Object key = i.next();
+ Object value = queryData.get(key);
+ copy.queryData.add(new QueryPair(String.valueOf(key), value));
+ }
+ return copy;
+ }
+
+
+ /**
+ * For internal use.
+ *
* Copies 'that' LinkTool into this one and sets the new URI.
*
* @param uri uri string
@@ -448,12 +481,37 @@
}
/**
+ * <p>Adds multiple key=value pairs to the query data.
+ * This returns a new LinkTool containing both a copy of
+ * this LinkTool's query data and the new data.
+ * Query data is URL encoded before it is appended.</p>
+ *
+ * @param parameters map of new query data keys to values
+ * @return a new instance of LinkTool
+ * @since VelocityTools 1.3
+ */
+ public LinkTool addQueryData(Map parameters)
+ {
+ return copyWith(parameters);
+ }
+
+ /**
* Convenience method equivalent to [EMAIL PROTECTED] #addQueryData}.
* @since VelocityTools 1.3
*/
public LinkTool param(Object key, Object value)
{
return addQueryData(String.valueOf(key), value);
+ }
+
+ /**
+ * Convenience method equivalent to
+ * [EMAIL PROTECTED] #addQueryData(Map parameters)}.
+ * @since VelocityTools 1.3
+ */
+ public LinkTool params(Map parameters)
+ {
+ return copyWith(parameters);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]