Author: ivaynberg Date: Tue Nov 11 10:20:18 2008 New Revision: 713098 URL: http://svn.apache.org/viewvc?rev=713098&view=rev Log: WICKET-1794
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/IndexedParamUrlCodingStrategy.java Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/IndexedParamUrlCodingStrategy.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/IndexedParamUrlCodingStrategy.java?rev=713098&r1=713097&r2=713098&view=diff ============================================================================== --- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/IndexedParamUrlCodingStrategy.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/IndexedParamUrlCodingStrategy.java Tue Nov 11 10:20:18 2008 @@ -64,17 +64,28 @@ * name of pagemap */ public IndexedParamUrlCodingStrategy(String mountPath, Class bookmarkablePageClass, - String pageMapName) + String pageMapName) { super(mountPath, bookmarkablePageClass, pageMapName); } + @Override protected void appendParameters(AppendingStringBuffer url, Map parameters) { int i = 0; while (parameters.containsKey(String.valueOf(i))) { - String value = (String)parameters.get(String.valueOf(i)); + String value = null; + Object parameter = parameters.get(String.valueOf(i)); + if (parameter instanceof String[] && ((String[])parameter).length > 0) + { + value = ((String[])parameter)[0]; + } + else + { + value = parameter.toString(); + } + if (!url.endsWith("/")) { url.append("/"); @@ -92,8 +103,8 @@ { url.append("/"); } - url.append(WebRequestCodingStrategy.PAGEMAP).append("/").append(urlEncodePathComponent(pageMap)) - .append("/"); + url.append(WebRequestCodingStrategy.PAGEMAP).append("/").append( + urlEncodePathComponent(pageMap)).append("/"); } String intface = (String)parameters.get(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME); @@ -105,16 +116,17 @@ url.append("/"); } url.append(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME).append("/").append( - urlEncodePathComponent(intface)).append("/"); + urlEncodePathComponent(intface)).append("/"); } if (i != parameters.size()) { throw new WicketRuntimeException( - "Not all parameters were encoded. Make sure all parameter names are integers in consecutive order starting with zero. Current parameter names are: " + - parameters.keySet().toString()); + "Not all parameters were encoded. Make sure all parameter names are integers in consecutive order starting with zero. Current parameter names are: " + + parameters.keySet().toString()); } } + @Override protected ValueMap decodeParameters(String urlFragment, Map urlParameters) { PageParameters params = new PageParameters(); @@ -139,14 +151,15 @@ if (WebRequestCodingStrategy.PAGEMAP.equals(parts[i])) { i++; - params.put(WebRequestCodingStrategy.PAGEMAP, WebRequestCodingStrategy - .decodePageMapName(urlDecodePathComponent(parts[i]))); + params.put( + WebRequestCodingStrategy.PAGEMAP, + WebRequestCodingStrategy.decodePageMapName(urlDecodePathComponent(parts[i]))); } else if (WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME.equals(parts[i])) { i++; params.put(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME, - urlDecodePathComponent(parts[i])); + urlDecodePathComponent(parts[i])); } else {