You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2010/09/21 10:31:08 UTC
svn commit: r999269 -
/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java
Author: mgrigorov
Date: Tue Sep 21 08:31:07 2010
New Revision: 999269
URL: http://svn.apache.org/viewvc?rev=999269&view=rev
Log:
WICKET-3065 HomePageMapper ignores request to '/' with query string parameters
HomePageMapper should map the request if there are no segments in the URL.
Use IPageParametersEncoder to parse the query parameters.
TODO:
- add a unit test
- PageParametersEncoder ignores parameters like '?name=' - fix it
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java?rev=999269&r1=999268&r2=999269&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java Tue Sep 21 08:31:07 2010
@@ -19,8 +19,13 @@ package org.apache.wicket.request.mapper
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Url;
+import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.handler.PageProvider;
import org.apache.wicket.request.handler.RenderPageRequestHandler;
+import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.util.lang.Args;
/**
* Mapper for rendering home page.
@@ -29,6 +34,28 @@ import org.apache.wicket.request.handler
*/
public class HomePageMapper extends AbstractComponentMapper
{
+ private final IPageParametersEncoder pageParametersEncoder;
+
+ /**
+ * Construct.
+ */
+ public HomePageMapper()
+ {
+ this(new PageParametersEncoder());
+ }
+
+ /**
+ * Construct.
+ *
+ * @param pageParametersEncoder
+ */
+ public HomePageMapper(IPageParametersEncoder pageParametersEncoder)
+ {
+ Args.notNull(pageParametersEncoder, "pageParametersEncoder");
+
+ this.pageParametersEncoder = pageParametersEncoder;
+ }
+
public int getCompatibilityScore(Request request)
{
@@ -42,15 +69,30 @@ public class HomePageMapper extends Abst
public IRequestHandler mapRequest(Request request)
{
- if (request.getUrl().getSegments().size() == 0 &&
- request.getUrl().getQueryParameters().size() == 0)
+ final Url url = request.getUrl();
+
+ if (url.getSegments().size() == 0)
{
- return new RenderPageRequestHandler(new PageProvider(getContext().getHomePageClass()));
+ final Class<? extends IRequestablePage> homePageClass = getContext().getHomePageClass();
+
+ final PageProvider pageProvider;
+
+ if (url.getQueryParameters().size() > 0)
+ {
+ PageParameters pageParameters = extractPageParameters(request, 0,
+ pageParametersEncoder);
+ pageProvider = new PageProvider(homePageClass, pageParameters);
+ }
+ else
+ {
+ pageProvider = new PageProvider(homePageClass);
+ }
+
+ return new RenderPageRequestHandler(pageProvider);
}
else
{
return null;
}
}
-
}