Author: knopp
Date: Sun Jul 29 02:04:35 2007
New Revision: 560702
URL: http://svn.apache.org/viewvc?view=rev&rev=560702
Log:
WICKET-30 - Made redirect configurable
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java?view=diff&rev=560702&r1=560701&r2=560702
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
Sun Jul 29 02:04:35 2007
@@ -97,6 +97,17 @@
}
/**
+ * Returns whether after hitting bookmarkable url the request should be
+ * redirected to a hybrid URL. This is recommended for pages with Ajax.
+ *
+ * @return
+ */
+ protected boolean isRedirectOnBookmarkableRequest()
+ {
+ return true;
+ }
+
+ /**
* @see
org.apache.wicket.request.target.coding.IRequestTargetUrlCodingStrategy#decode(org.apache.wicket.request.RequestParameters)
*/
public IRequestTarget decode(RequestParameters requestParameters)
@@ -147,7 +158,7 @@
{
// bookmarkable page request
return new
HybridBookmarkablePageRequestTarget(pageMapName, (Class)pageClassRef.get(),
- parameters,
originalUrlTrailingSlashesCount);
+ parameters,
originalUrlTrailingSlashesCount, isRedirectOnBookmarkableRequest());
}
else
// hybrid url
@@ -167,7 +178,7 @@
// we didn't find the page, act as bookmarkable
page request -
// create new instance
return new
HybridBookmarkablePageRequestTarget(pageMapName, (Class)pageClassRef
- .get(), parameters,
originalUrlTrailingSlashesCount);
+ .get(), parameters,
originalUrlTrailingSlashesCount, isRedirectOnBookmarkableRequest());
}
}
@@ -411,8 +422,8 @@
{
int lastIndexRight = url.lastIndexOf(getEndSeparator());
int lastIndexLeft = url.lastIndexOf(getBeginSeparator(),
lastIndexRight - 1);
- if (lastIndexLeft != -1 && lastIndexRight != -1 &&
- lastIndexRight - lastIndexLeft > 0 &&
lastIndexRight == url.length() - 1)
+ if (lastIndexLeft != -1 && lastIndexRight != -1 &&
lastIndexRight - lastIndexLeft > 0 &&
+ lastIndexRight == url.length() - 1)
{
String infoSubstring = url.substring(lastIndexLeft + 1,
lastIndexRight);
PageInfo info = PageInfo.parsePageInfo(infoSubstring);
@@ -436,6 +447,7 @@
/**
* Encodes the PageInfo part to the URL
+ *
* @param url
* @param pageInfo
* @return
@@ -623,13 +635,15 @@
};
/**
- * BookmarkablePage request target that does a redirect after
bookmarkable page was rendered
- * (only if the bookmarkable page is stateful though)
+ * BookmarkablePage request target that does a redirect after
bookmarkable
+ * page was rendered (only if the bookmarkable page is stateful though)
+ *
* @author Matej Knopp
*/
private static class HybridBookmarkablePageRequestTarget extends
BookmarkablePageRequestTarget
{
private final int originalUrlTrailingSlashesCount;
+ private final boolean redirect;
/**
* Construct.
@@ -638,12 +652,14 @@
* @param pageClass
* @param pageParameters
* @param originalUrlTrailingSlashesCount
+ * @param redirect
*/
public HybridBookmarkablePageRequestTarget(String pageMapName,
Class pageClass,
- PageParameters pageParameters, int
originalUrlTrailingSlashesCount)
+ PageParameters pageParameters, int
originalUrlTrailingSlashesCount, boolean redirect)
{
super(pageMapName, pageClass, pageParameters);
this.originalUrlTrailingSlashesCount =
originalUrlTrailingSlashesCount;
+ this.redirect = redirect;
}
protected Page newPage(Class pageClass, RequestCycle
requestCycle)
@@ -661,7 +677,7 @@
if (requestCycle.isRedirect() == false)
{
Page page = getPage(requestCycle);
- if (page.isPageStateless() == false)
+ if (page.isPageStateless() == false && redirect)
{
requestCycle.redirectTo(page);
}