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;
}