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


Reply via email to