You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2008/04/10 01:56:13 UTC

svn commit: r646600 - in /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket: markup/html/form/ protocol/http/ protocol/http/request/

Author: knopp
Date: Wed Apr  9 16:56:12 2008
New Revision: 646600

URL: http://svn.apache.org/viewvc?rev=646600&view=rev
Log:
WICKET-1510

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java?rev=646600&r1=646599&r2=646600&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java Wed Apr  9 16:56:12 2008
@@ -186,7 +186,7 @@
 	 */
 	class FormDispatchRequest extends Request
 	{
-		private final ValueMap params = new ValueMap();
+		private final Map params = new HashMap();
 
 		private final Request realRequest;
 
@@ -204,7 +204,7 @@
 			this.url = realRequest.decodeURL(url);
 
 			String queryString = this.url.substring(this.url.indexOf("?") + 1);
-			RequestUtils.decodeParameters(queryString, params);
+			RequestUtils.decodeUrlParameters(queryString, params);
 		}
 
 		/**
@@ -277,6 +277,12 @@
 		{
 			return url;
 		}
+		
+		@Override
+		public String getQueryString()
+		{
+			return realRequest.getQueryString();
+		}
 	}
 
 	/**
@@ -1577,7 +1583,7 @@
 			String method = getMethod().toLowerCase();
 			tag.put("method", method);
 			String url = urlFor(IFormSubmitListener.INTERFACE).toString();
-			if (method.equals("get"))
+			if (encodeUrlInHiddenFields())
 			{
 				int i = url.indexOf('?');
 				String action = (i > -1) ? url.substring(0, i) : "";
@@ -1617,6 +1623,12 @@
 		}
 	}
 
+	protected boolean encodeUrlInHiddenFields()
+	{
+		String method = getMethod().toLowerCase();
+		return method.equals("get");
+	}
+
 	/**
 	 * Append an additional hidden input tag to support anchor tags that can submit a form.
 	 * 
@@ -1639,20 +1651,16 @@
 				.append("\" id=\"")
 				.append(nameAndId)
 				.append("\" />");
-			String method = getMethod().toLowerCase();
+
 			// if it's a get, did put the parameters in the action attribute,
 			// and have to write the url parameters as hidden fields
-			if (method.equals("get"))
+			if (encodeUrlInHiddenFields())
 			{
 				String url = urlFor(IFormSubmitListener.INTERFACE).toString();
 				int i = url.indexOf('?');
 				String[] params = ((i > -1) ? url.substring(i + 1) : url).split("&");
-				for (int j = 0; j < params.length; j++)
-				{
-					String[] pair = params[j].split("=");
-					buffer.append("<input type=\"hidden\" name=\"").append(pair[0]).append(
-						"\" value=\"").append(pair.length > 1 ? pair[1] : "").append("\" />");
-				}
+
+				writeParamsAsHiddenFields(params, buffer);
 			}
 			buffer.append("</div>");
 			getResponse().write(buffer);
@@ -1670,6 +1678,17 @@
 
 		// do the rest of the processing
 		super.onComponentTagBody(markupStream, openTag);
+	}
+
+	protected void writeParamsAsHiddenFields(String[] params, AppendingStringBuffer buffer)
+	{
+		for (int j = 0; j < params.length; j++)
+		{
+			String[] pair = params[j].split("=");
+
+			buffer.append("<input type=\"hidden\" name=\"").append(pair[0]).append(
+				"\" value=\"").append(pair.length > 1 ? pair[1] : "").append("\" />");
+		}
 	}
 
 	/**

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java?rev=646600&r1=646599&r2=646600&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java Wed Apr  9 16:56:12 2008
@@ -21,7 +21,9 @@
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -68,6 +70,48 @@
 				// Should never happen
 			}
 		}
+	}
+
+	public static void decodeUrlParameters(String queryString, Map<String, String[]> parameters)
+	{
+		Map<String, List<String>> temp = new HashMap<String, List<String>>();
+		final String[] paramTuples = queryString.split("&");
+		for (int t = 0; t < paramTuples.length; t++)
+		{
+			final String[] bits = paramTuples[t].split("=");
+			final String key;
+			final String value;
+			try
+			{
+				key = URLDecoder.decode(bits[0], "UTF-8");
+				if (bits.length == 2)
+				{
+					value = URLDecoder.decode(bits[1], "UTF-8");
+				}
+				else
+				{
+					value = "";
+				}
+				List<String> l = temp.get(key);
+				if (l == null)
+				{
+					l = new ArrayList<String>();
+					temp.put(key, l);
+				}
+				l.add(value);
+			}
+			catch (UnsupportedEncodingException e)
+			{
+				// Should never happen
+			}
+		}
+	
+		for (Map.Entry<String, List<String>> entry : temp.entrySet())
+		{
+			String s[] = new String[entry.getValue().size()];
+			entry.getValue().toArray(s);
+			parameters.put(entry.getKey(), s);
+		}	
 	}
 
 	/**

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java?rev=646600&r1=646599&r2=646600&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java Wed Apr  9 16:56:12 2008
@@ -530,6 +530,12 @@
 		{
 			return url;
 		}
+		
+		@Override
+		public String getQueryString()
+		{
+			return request.getQueryString();
+		}
 	}
 
 	/**

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java?rev=646600&r1=646599&r2=646600&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java Wed Apr  9 16:56:12 2008
@@ -215,6 +215,7 @@
 			}
 		}
 		parameters.setParameters(map);
+		parameters.setQueryString(request.getQueryString());
 		return parameters;
 	}