You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by nb...@apache.org on 2006/11/21 18:31:29 UTC
svn commit: r477766 -
/jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java
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 {@link #addQueryData}.
* @since VelocityTools 1.3
*/
public LinkTool param(Object key, Object value)
{
return addQueryData(String.valueOf(key), value);
+ }
+
+ /**
+ * Convenience method equivalent to
+ * {@link #addQueryData(Map parameters)}.
+ * @since VelocityTools 1.3
+ */
+ public LinkTool params(Map parameters)
+ {
+ return copyWith(parameters);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
For additional commands, e-mail: dev-help@velocity.apache.org