[ https://issues.apache.org/jira/browse/WICKET-1484?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12589084#action_12589084 ]
Erik van Oosten commented on WICKET-1484: ----------------------------------------- An alternative is to replace the getParameterMap() method in ServletWebRequest like this: public Map getParameterMap() { // Lazy-init parameter map. Only make one copy. It's more efficient, and // we can add stuff to it (which the BookmarkablePage stuff does). if (parameterMap == null) { parameterMap = new HashMap(httpServletRequest.getParameterMap()); // Replace single value parameter arrays with a single string. for (Iterator i = parameterMap.keySet().iterator(); i.hasNext(); ) { Object key = i.next(); Object value = parameterMap.get(key); if ((value instanceof String[]) && ((String[]) value).length == 1) { parameterMap.put(key, ((String[]) value)[0]); } } } // return a mutable copy return parameterMap; } > class cast exception (String) in MixedParamUrlCodingStrategy with additional > params with patch > ---------------------------------------------------------------------------------------------- > > Key: WICKET-1484 > URL: https://issues.apache.org/jira/browse/WICKET-1484 > Project: Wicket > Issue Type: Bug > Components: wicket > Affects Versions: 1.3.2 > Reporter: Michael Grinner > Attachments: 1484_patch.txt > > > MixedParamUrlCodingStrategy has a bug in > MixedParamUrlCodingStrategy > appendParameters > if (!parameterNamesToAdd.isEmpty()) > { > boolean first = true; > final Iterator iterator; > if (UnitTestSettings.getSortUrlParameters()) > { > iterator = new > TreeSet(parameterNamesToAdd).iterator(); > } > else > { > iterator = parameterNamesToAdd.iterator(); > } > while (iterator.hasNext()) > { > url.append(first ? '?' : '&'); > String parameterName = (String)iterator.next(); > @@@ String value = (String)parameters.get(parameterName); > > url.append(urlEncode(parameterName)).append("=").append(urlEncode(value)); > first = false; > } > } > where value should be a String[] not a String. > like in AbstractRequestTargetUrlCodingStrategy > appendParameters > String[] values = (String[])value; > for (int i = 0; i < values.length; i++) > { > appendValue(url, entry.getKey().toString(), values[i]); > } > it works ok after patching MixedParamUrlCodingStrategy to > if (!parameterNamesToAdd.isEmpty()) { > boolean first = true; > final Iterator iterator; > if (UnitTestSettings.getSortUrlParameters()) { > iterator = new TreeSet(parameterNamesToAdd).iterator(); > } else { > iterator = parameterNamesToAdd.iterator(); > } > while (iterator.hasNext()) { > url.append(first ? '?' : '&'); > String parameterName = (String) iterator.next(); > Object value = parameters.get(parameterName); > if (value != null) { > if (value instanceof String[]) { > String[] values = (String[]) value; > for (String element : values) { > url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(element)); > } > } else { > url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(value.toString())); > } > } > first = false; > } > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.