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); }