You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2012/01/04 19:55:20 UTC

[2/2] git commit: WICKET-4290: Do not render page parameters for statefull links

WICKET-4290: Do not render page parameters for statefull links


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/eb86ba32
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/eb86ba32
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/eb86ba32

Branch: refs/heads/wicket-1.5.x
Commit: eb86ba328abd8280327d95dd63473c4199f0e864
Parents: ec53d1b
Author: Emond Papegaaij <pa...@apache.org>
Authored: Tue Jan 3 08:09:05 2012 +0100
Committer: Emond Papegaaij <pa...@apache.org>
Committed: Wed Jan 4 17:48:20 2012 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/wicket/Component.java |   47 +++++++++++++-
 .../wicket/behavior/AbstractAjaxBehavior.java      |    3 +-
 .../org/apache/wicket/markup/html/form/Check.java  |    3 +-
 .../apache/wicket/markup/html/form/CheckBox.java   |    3 +-
 .../wicket/markup/html/form/DropDownChoice.java    |    4 +-
 .../org/apache/wicket/markup/html/form/Form.java   |   22 +-------
 .../org/apache/wicket/markup/html/form/Radio.java  |    3 +-
 .../wicket/markup/html/form/RadioChoice.java       |    3 +-
 .../wicket/markup/html/form/StatelessForm.java     |    6 ++
 .../image/resource/LocalizedImageResource.java     |    2 +-
 .../wicket/markup/html/link/InlineFrame.java       |    2 +-
 .../org/apache/wicket/markup/html/link/Link.java   |    3 +-
 .../wicket/markup/html/link/ResourceLink.java      |    2 +-
 .../wicket/markup/html/link/StatelessLink.java     |    6 ++
 .../wicket/markup/html/pages/RedirectPage.java     |    5 +-
 .../request/handler/PageAndComponentProvider.java  |   14 ++++
 .../wicket/request/handler/PageProvider.java       |    2 +-
 .../wicket/util/tester/BaseWicketTester.java       |    8 ++-
 .../org/apache/wicket/BehaviorRequestTest.java     |    4 +-
 .../java/org/apache/wicket/BehaviorUrlTest.java    |    4 +-
 .../wicket/behavior/ImmutableBehaviorIdsTest.java  |    3 +-
 .../captcha/kittens/KittenCaptchaPanel.java        |    4 +-
 22 files changed, 108 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/Component.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java b/wicket-core/src/main/java/org/apache/wicket/Component.java
index 58ef5cd..bad6495 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -3272,7 +3272,7 @@ public abstract class Component
 	{
 		return getRequestCycle().urlFor(pageClass, parameters);
 	}
-
+	
 	/**
 	 * Gets a URL for the listener interface on a behavior (e.g. IBehaviorListener on
 	 * AjaxPagingNavigationBehavior).
@@ -3282,13 +3282,33 @@ public abstract class Component
 	 * @param listener
 	 *            The listener interface that the URL should call
 	 * @return The URL
+	 * @deprecated use {@link #urlFor(Behavior, RequestListenerInterface, PageParameters)} with explit parameters
 	 */
+	@Deprecated
 	public final CharSequence urlFor(final Behavior behaviour,
 		final RequestListenerInterface listener)
 	{
+		return urlFor(behaviour, listener, null);
+	}
+	
+	/**
+	 * Gets a URL for the listener interface on a behavior (e.g. IBehaviorListener on
+	 * AjaxPagingNavigationBehavior).
+	 * 
+	 * @param behaviour
+	 *            The behavior that the URL should point to
+	 * @param listener
+	 *            The listener interface that the URL should call
+	 * @param parameters
+	 *            The parameters that should be rendered into the urls
+	 * @return The URL
+	 */
+	public final CharSequence urlFor(final Behavior behaviour,
+		final RequestListenerInterface listener, final PageParameters parameters)
+	{
 		int id = getBehaviorId(behaviour);
 		Page page = getPage();
-		PageAndComponentProvider provider = new PageAndComponentProvider(page, this);
+		PageAndComponentProvider provider = new PageAndComponentProvider(page, this, parameters);
 		IRequestHandler handler;
 		if (page.isPageStateless())
 		{
@@ -3315,7 +3335,7 @@ public abstract class Component
 	{
 		return getRequestCycle().urlFor(requestHandler);
 	}
-
+	
 	/**
 	 * Gets a URL for the listener interface (e.g. ILinkListener).
 	 * 
@@ -3324,11 +3344,30 @@ public abstract class Component
 	 * @param listener
 	 *            The listener interface that the URL should call
 	 * @return The URL
+	 * @deprecated use {@link #urlFor(RequestListenerInterface, PageParameters)} with explicit page parameters
 	 */
+	@Deprecated
 	public final CharSequence urlFor(final RequestListenerInterface listener)
 	{
+		return urlFor(listener, null);
+	}	
+
+	/**
+	 * Gets a URL for the listener interface (e.g. ILinkListener).
+	 * 
+	 * @see RequestCycle#urlFor(IRequestHandler)
+	 * 
+	 * @param listener
+	 *            The listener interface that the URL should call
+	 * @param parameters
+	 *            The parameters that should be rendered into the urls
+	 * @return The URL
+	 */
+	public final CharSequence urlFor(final RequestListenerInterface listener,
+		final PageParameters parameters)
+	{
 		Page page = getPage();
-		PageAndComponentProvider provider = new PageAndComponentProvider(page, this);
+		PageAndComponentProvider provider = new PageAndComponentProvider(page, this, parameters);
 		IRequestHandler handler;
 		if (page.isPageStateless())
 		{

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java b/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
index 9d82d59..871f2fb 100644
--- a/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
@@ -19,6 +19,7 @@ package org.apache.wicket.behavior;
 import org.apache.wicket.Component;
 import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 /**
  * Abstract class for handling Ajax roundtrips. This class serves as a base for javascript specific
@@ -86,7 +87,7 @@ public abstract class AbstractAjaxBehavior extends Behavior implements IBehavior
 
 		rli = IBehaviorListener.INTERFACE;
 
-		return getComponent().urlFor(this, rli);
+		return getComponent().urlFor(this, rli, new PageParameters());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
index 6ef2ab2..cce02ac 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
@@ -23,6 +23,7 @@ import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.Strings;
 
 
@@ -196,7 +197,7 @@ public class Check<T> extends LabeledWebMarkupContainer
 		if (group.wantOnSelectionChangedNotifications())
 		{
 			// url that points to this components IOnChangeListener method
-			CharSequence url = group.urlFor(IOnChangeListener.INTERFACE);
+			CharSequence url = group.urlFor(IOnChangeListener.INTERFACE, new PageParameters());
 
 			Form<?> form = group.findParent(Form.class);
 			if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
index af0755c..d97e51b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
@@ -20,6 +20,7 @@ import java.util.Locale;
 
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.convert.IConverter;
 
 /**
@@ -155,7 +156,7 @@ public class CheckBox extends FormComponent<Boolean> implements IOnChangeListene
 		// checkbox is clicked?
 		if (wantOnSelectionChangedNotifications())
 		{
-			CharSequence url = urlFor(IOnChangeListener.INTERFACE);
+			CharSequence url = urlFor(IOnChangeListener.INTERFACE, new PageParameters());
 
 			Form<?> form = findParent(Form.class);
 			if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
index 0d82de3..4c27bd0 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
@@ -23,6 +23,7 @@ import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.request.handler.PageAndComponentProvider;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 
 /**
@@ -232,7 +233,8 @@ public class DropDownChoice<T> extends AbstractSingleSelectChoice<T> implements
 			// we do not want relative URL here, because it will be used by
 			// Form#dispatchEvent
 			CharSequence url = urlFor(new ListenerInterfaceRequestHandler(
-				new PageAndComponentProvider(getPage(), this), IOnChangeListener.INTERFACE));
+				new PageAndComponentProvider(getPage(), this, new PageParameters()),
+				IOnChangeListener.INTERFACE));
 
 			Form<?> form = findParent(Form.class);
 			if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
index cbad631..b4ea1e8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
@@ -837,26 +837,6 @@ public class Form<T> extends WebMarkupContainer implements IFormSubmitListener
 			// Form has no error
 			delegateSubmit(submittingComponent);
 		}
-
-		// If the form is stateless page parameters contain all form component
-		// values. We need to remove those otherwise they get appended to action URL
-		final PageParameters parameters = page.getPageParameters();
-		if (parameters != null)
-		{
-			visitFormComponents(new IVisitor<FormComponent<?>, Void>()
-			{
-				public void component(final FormComponent<?> formComponent, final IVisit<Void> visit)
-				{
-					parameters.remove(formComponent.getInputName());
-				}
-			});
-			parameters.remove(hiddenFieldId);
-			if (submittingComponent instanceof AbstractSubmitLink)
-			{
-				AbstractSubmitLink submitLink = (AbstractSubmitLink)submittingComponent;
-				parameters.remove(submitLink.getInputName());
-			}
-		}
 	}
 
 	/**
@@ -1514,7 +1494,7 @@ public class Form<T> extends WebMarkupContainer implements IFormSubmitListener
 	 */
 	protected CharSequence getActionUrl()
 	{
-		return urlFor(IFormSubmitListener.INTERFACE);
+		return urlFor(IFormSubmitListener.INTERFACE, new PageParameters());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
index 9ef709c..d0392bc 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
@@ -21,6 +21,7 @@ import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.Strings;
 
 /**
@@ -182,7 +183,7 @@ public class Radio<T> extends LabeledWebMarkupContainer
 		if (group.wantOnSelectionChangedNotifications())
 		{
 			// url that points to this components IOnChangeListener method
-			CharSequence url = group.urlFor(IOnChangeListener.INTERFACE);
+			CharSequence url = group.urlFor(IOnChangeListener.INTERFACE, new PageParameters());
 
 			Form<?> form = group.findParent(Form.class);
 			if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
index 5422e44..4608781 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
@@ -22,6 +22,7 @@ import java.util.Map;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.convert.IConverter;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.apache.wicket.util.string.Strings;
@@ -403,7 +404,7 @@ public class RadioChoice<T> extends AbstractSingleSelectChoice<T> implements IOn
 				// when the option is clicked?
 				if (wantOnSelectionChangedNotifications())
 				{
-					CharSequence url = urlFor(IOnChangeListener.INTERFACE);
+					CharSequence url = urlFor(IOnChangeListener.INTERFACE, new PageParameters());
 
 					Form<?> form = findParent(Form.class);
 					if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
index d584193..034519c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
@@ -66,4 +66,10 @@ public class StatelessForm<T> extends Form<T>
 		setResponsePage(getPage().getClass(), getPage().getPageParameters());
 		return MethodMismatchResponse.ABORT;
 	}
+
+	@Override
+	protected CharSequence getActionUrl()
+	{
+		return urlFor(IFormSubmitListener.INTERFACE, getPage().getPageParameters());
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java
index 03d4e92..02b90da 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java
@@ -333,7 +333,7 @@ public final class LocalizedImageResource implements IClusterable
 		else
 		{
 			// Create URL to component
-			url = component.urlFor(IResourceListener.INTERFACE);
+			url = component.urlFor(IResourceListener.INTERFACE, resourceParameters);
 		}
 
 		// Set the SRC attribute to point to the component or shared resource

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
index c5f1587..9a692d3 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
@@ -157,7 +157,7 @@ public class InlineFrame extends WebMarkupContainer implements ILinkListener
 	 */
 	protected CharSequence getURL()
 	{
-		return urlFor(ILinkListener.INTERFACE);
+		return urlFor(ILinkListener.INTERFACE, new PageParameters());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
index b8272a6..f91fcb5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
@@ -21,6 +21,7 @@ import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 /**
  * Implementation of a hyperlink component. A link can be used with an anchor (&lt;a href...)
@@ -321,7 +322,7 @@ public abstract class Link<T> extends AbstractLink implements ILinkListener
 	 */
 	protected CharSequence getURL()
 	{
-		return urlFor(ILinkListener.INTERFACE);
+		return urlFor(ILinkListener.INTERFACE, new PageParameters());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
index c46e7a8..3102ae7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
@@ -140,6 +140,6 @@ public class ResourceLink<T> extends Link<T> implements IResourceListener
 			return getRequestCycle().urlFor(
 				new ResourceReferenceRequestHandler(resourceReference, resourceParameters));
 		}
-		return urlFor(IResourceListener.INTERFACE);
+		return urlFor(IResourceListener.INTERFACE, resourceParameters);
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
index dd2f4ec..9a4a5c5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
@@ -48,4 +48,10 @@ public abstract class StatelessLink<T> extends Link<T>
 	{
 		return true;
 	}
+
+	@Override
+	protected CharSequence getURL()
+	{
+		return urlFor(ILinkListener.INTERFACE, getPage().getPageParameters());
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/RedirectPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/RedirectPage.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/RedirectPage.java
index 7113366..9b60bea 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/RedirectPage.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/RedirectPage.java
@@ -69,7 +69,7 @@ public class RedirectPage extends WebPage
 	 */
 	public RedirectPage(final Page page)
 	{
-		this(page.urlFor(IRedirectListener.INTERFACE), 0);
+		this(page.urlFor(IRedirectListener.INTERFACE, page.getPageParameters()), 0);
 	}
 
 	/**
@@ -83,7 +83,8 @@ public class RedirectPage extends WebPage
 	 */
 	public RedirectPage(final Page page, final int waitBeforeRedirectInSeconds)
 	{
-		this(page.urlFor(IRedirectListener.INTERFACE), waitBeforeRedirectInSeconds);
+		this(page.urlFor(IRedirectListener.INTERFACE, page.getPageParameters()),
+			waitBeforeRedirectInSeconds);
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java b/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
index b106201..2424ba1 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
@@ -134,6 +134,20 @@ public class PageAndComponentProvider extends PageProvider implements IPageAndCo
 		setComponentPath(componentPath);
 	}
 
+	public PageAndComponentProvider(IRequestablePage page, IRequestableComponent component,
+		PageParameters parameters)
+	{
+		super(page);
+
+		Args.notNull(component, "component");
+
+		this.component = component;
+		if (parameters != null)
+		{
+			setPageParameters(parameters);
+		}
+	}
+
 	/**
 	 * @see org.apache.wicket.request.handler.IPageAndComponentProvider#getComponent()
 	 */

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java b/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
index 5103117..58c6e8c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
@@ -346,7 +346,7 @@ public class PageProvider implements IPageProvider, IIntrospectablePageProvider
 	 * 
 	 * @param pageParameters
 	 */
-	private void setPageParameters(PageParameters pageParameters)
+	protected void setPageParameters(PageParameters pageParameters)
 	{
 		this.pageParameters = pageParameters;
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
index 120f339..8628b7a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
@@ -980,7 +980,7 @@ public class BaseWicketTester
 	{
 		Args.notNull(link, "link");
 
-		return link.urlFor(ILinkListener.INTERFACE).toString();
+		return link.urlFor(ILinkListener.INTERFACE, new PageParameters()).toString();
 	}
 
 	/**
@@ -1912,8 +1912,10 @@ public class BaseWicketTester
 	public void submitForm(String path)
 	{
 		Form<?> form = (Form<?>)getComponentFromLastRenderedPage(path);
-		Url url = Url.parse(form.getRootForm().urlFor(IFormSubmitListener.INTERFACE).toString(),
-			Charset.forName(request.getCharacterEncoding()));
+		Url url = Url.parse(
+			form.getRootForm()
+				.urlFor(IFormSubmitListener.INTERFACE, new PageParameters())
+				.toString(), Charset.forName(request.getCharacterEncoding()));
 
 		// make url absolute
 		transform(url);

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java b/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
index 96ed35c..88c6e11 100644
--- a/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
@@ -27,6 +27,7 @@ import org.apache.wicket.request.handler.IPageAndComponentProvider;
 import org.apache.wicket.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.request.handler.ListenerInvocationNotAllowedException;
 import org.apache.wicket.request.handler.PageAndComponentProvider;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.junit.Before;
@@ -133,7 +134,8 @@ public class BehaviorRequestTest extends WicketTestCase
 		public void onComponentTag(Component component, ComponentTag tag)
 		{
 			super.onComponentTag(component, tag);
-			tag.put("href", component.urlFor(this, IBehaviorListener.INTERFACE));
+			tag.put("href",
+				component.urlFor(this, IBehaviorListener.INTERFACE, new PageParameters()));
 		}
 
 		public void onRequest()

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java b/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java
index 64a627c..bccb4cf 100644
--- a/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java
@@ -26,6 +26,7 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.apache.wicket.util.string.StringValue;
@@ -131,7 +132,8 @@ public class BehaviorUrlTest extends WicketTestCase
 		public void onComponentTag(Component component, ComponentTag tag)
 		{
 			super.onComponentTag(component, tag);
-			tag.put("href", component.urlFor(this, IBehaviorListener.INTERFACE));
+			tag.put("href",
+				component.urlFor(this, IBehaviorListener.INTERFACE, new PageParameters()));
 		}
 
 		public void onRequest()

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java b/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java
index f96aabb..786cc36 100644
--- a/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java
@@ -26,6 +26,7 @@ import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.junit.Test;
@@ -164,7 +165,7 @@ public class ImmutableBehaviorIdsTest extends WicketTestCase
 		public void onComponentTag(Component component, ComponentTag tag)
 		{
 			super.onComponentTag(component, tag);
-			tag.put(attr, component.urlFor(this, IBehaviorListener.INTERFACE));
+			tag.put(attr, component.urlFor(this, IBehaviorListener.INTERFACE, new PageParameters()));
 		}
 
 		public void onRequest()

http://git-wip-us.apache.org/repos/asf/wicket/blob/eb86ba32/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
index 5df2157..189ceec 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
@@ -43,6 +43,7 @@ import org.apache.wicket.model.AbstractReadOnlyModel;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.http.WebResponse;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.DynamicImageResource;
 import org.apache.wicket.util.time.Time;
 
@@ -199,7 +200,8 @@ public class KittenCaptchaPanel extends Panel
 					javascript.append("Wicket.$('")
 						.append(image.getMarkupId())
 						.append("').src = '");
-					CharSequence url = image.urlFor(IResourceListener.INTERFACE);
+					CharSequence url = image.urlFor(IResourceListener.INTERFACE,
+						new PageParameters());
 					javascript.append(url);
 					javascript.append(url.toString().indexOf('?') > -1 ? "&amp;" : "?")
 						.append("rand=")