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
{