Author: almaw
Date: Thu Jan 25 14:49:43 2007
New Revision: 500035
URL: http://svn.apache.org/viewvc?view=rev&rev=500035
Log:
Fix PageRequestTargets to not do double-indirects on encoding.
Modified:
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/request/WebRequestCodingStrategy.java
Modified:
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/request/WebRequestCodingStrategy.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/request/WebRequestCodingStrategy.java?view=diff&rev=500035&r1=500034&r2=500035
==============================================================================
---
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/request/WebRequestCodingStrategy.java
(original)
+++
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/request/WebRequestCodingStrategy.java
Thu Jan 25 14:49:43 2007
@@ -50,6 +50,7 @@
import wicket.request.target.component.IBookmarkablePageRequestTarget;
import wicket.request.target.component.IPageRequestTarget;
import
wicket.request.target.component.listener.IListenerInterfaceRequestTarget;
+import wicket.request.target.component.listener.RedirectPageRequestTarget;
import wicket.request.target.resource.ISharedResourceRequestTarget;
import wicket.util.string.AppendingStringBuffer;
import wicket.util.string.PrependingStringBuffer;
@@ -225,8 +226,18 @@
* wicket.IRequestTarget)
*/
public final CharSequence encode(final RequestCycle requestCycle,
- final IRequestTarget requestTarget, final boolean
absolutePath)
+ IRequestTarget requestTarget, boolean absolutePath)
{
+ if (requestTarget instanceof IPageRequestTarget)
+ {
+ Page page =
((IPageRequestTarget)requestTarget).getPage();
+ requestTarget = new RedirectPageRequestTarget(page);
+ // Touch the page once because it could be that it did
go from stateless
+ // to statefull or it was a internally made page where
just a url must
+ // be made for (frames)
+ Session.get().touch(page);
+ }
+
// First check to see whether the target is mounted
CharSequence url = pathForTarget(requestTarget);
@@ -245,10 +256,6 @@
{
url = encode(requestCycle,
(IListenerInterfaceRequestTarget)requestTarget);
}
- else if (requestTarget instanceof IPageRequestTarget)
- {
- url = encode(requestCycle,
(IPageRequestTarget)requestTarget);
- }
// fallthough for non-default request targets
else
{
@@ -801,30 +808,6 @@
}
return url;
- }
-
- /**
- * Encode a page target.
- *
- * @param requestCycle
- * the current request cycle
- * @param requestTarget
- * the target to encode
- * @return the encoded url
- */
- protected CharSequence encode(RequestCycle requestCycle,
IPageRequestTarget requestTarget)
- {
- // Get the page we want a url from:
- Page page = requestTarget.getPage();
-
- // A url to a page is the IRedirectListener interface:
- CharSequence urlRedirect =
page.urlFor(IRedirectListener.INTERFACE);
-
- // Touch the page once because it could be that it did go from
stateless
- // to statefull or it was a internally made page where just a
url must
- // be made for (frames)
- Session.get().touch(page);
- return urlRedirect;
}
/**