|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.wicket.request.target.coding.AbstractRequestTargetUrlCodingStrategy org.apache.wicket.request.target.coding.HybridUrlCodingStrategy
public class HybridUrlCodingStrategy
An URL coding strategy that encodes the mount point, page parameters and page instance
information into the URL. The benefits compared to mounting page with
BookmarkablePageRequestTargetUrlCodingStrategy
are that the mount point is preserved even
after invoking listener interfaces (thus you don't lose bookmarkability after clicking links) and
that for ajax only pages the state is preserved on refresh.
The url with HybridUrlCodingStrategy
looks like /mount/path/param1/value1.3. or
/mount/path/param1/value1.3.2 where 3 is page Id and 2 is version number.
Also to preserve state on refresh with ajax-only pages the HybridUrlCodingStrategy
does
an immediate redirect after hitting bookmarkable URL, e.g. it immediately redirects from
/mount/path to /mount/path.3 where 3 is the next page id. This preserves the page instance on
subsequent page refresh.
Nested Class Summary | |
---|---|
static class |
HybridUrlCodingStrategy.HybridBookmarkablePageRequestTarget
BookmarkablePage request target that does a redirect after bookmarkable page was rendered (only if the bookmarkable page is stateful though) |
protected static class |
HybridUrlCodingStrategy.PageInfo
Possible string representation of PageInfo: pageId pageId.version pageMap (only if pageMap starts with a letter) .pageMap pageMap.pageId.version pageMap.pageId (only if pageMap name starts with a letter) |
protected static class |
HybridUrlCodingStrategy.PageInfoExtraction
Class that encapsulates HybridUrlCodingStrategy.PageInfo instance and the URL part prior the PageInfo part |
Field Summary | |
---|---|
static org.apache.wicket.request.target.coding.HybridUrlCodingStrategy.PageParametersMetaDataKey |
PAGE_PARAMETERS_META_DATA_KEY
Meta data key to store PageParameters in page instance. |
protected java.lang.ref.WeakReference |
pageClassRef
bookmarkable page class. |
Constructor Summary | |
---|---|
HybridUrlCodingStrategy(java.lang.String mountPath,
java.lang.Class pageClass)
Construct. |
|
HybridUrlCodingStrategy(java.lang.String mountPath,
java.lang.Class pageClass,
boolean redirectOnBookmarkableRequest)
Construct. |
Method Summary | |
---|---|
protected java.lang.String |
addPageInfo(java.lang.String url,
HybridUrlCodingStrategy.PageInfo pageInfo)
Encodes the PageInfo part to the URL |
protected boolean |
alwaysRedirectWhenPageMapIsSpecified()
Returns whether to redirect when there is pageMap specified in bookmarkable URL |
IRequestTarget |
decode(RequestParameters requestParameters)
Gets the decoded request target. |
java.lang.CharSequence |
encode(IRequestTarget requestTarget)
Gets the encoded url for the provided request target. |
protected HybridUrlCodingStrategy.PageInfoExtraction |
extractPageInfo(java.lang.String url)
Extracts the PageInfo string. |
protected java.lang.String |
getBeginSeparator()
|
protected java.lang.String |
getEndSeparator()
|
static PageParameters |
getInitialPagePageParameters(Page page)
|
protected IRequestTarget |
handleExpiredPage(java.lang.String pageMapName,
java.lang.Class pageClass,
int trailingSlashesCount,
boolean redirect)
Handles the case where a non-bookmarkable url with a hybrid base refers to a page that is no longer in session. |
protected boolean |
isRedirectOnBookmarkableRequest()
Returns whether after hitting bookmarkable url the request should be redirected to a hybrid URL. |
boolean |
matches(IRequestTarget requestTarget)
Gets whether this mounter is applicable for the provided request target. |
boolean |
matches(java.lang.String path)
Does given path match this mount? We match /mount/point or /mount/point/with/extra/path, but not /mount/pointXXX. |
static void |
setInitialPageParameters(Page page,
PageParameters pageParameters)
Sets the initial page parameters for page instance. |
java.lang.String |
toString()
|
Methods inherited from class org.apache.wicket.request.target.coding.AbstractRequestTargetUrlCodingStrategy |
---|
appendParameters, decodeParameters, getMountPath, urlDecode, urlDecodePathComponent, urlDecodeQueryComponent, urlEncode, urlEncodePathComponent, urlEncodeQueryComponent |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected final java.lang.ref.WeakReference pageClassRef
public static final org.apache.wicket.request.target.coding.HybridUrlCodingStrategy.PageParametersMetaDataKey PAGE_PARAMETERS_META_DATA_KEY
Constructor Detail |
---|
public HybridUrlCodingStrategy(java.lang.String mountPath, java.lang.Class pageClass, boolean redirectOnBookmarkableRequest)
mountPath
- pageClass
- redirectOnBookmarkableRequest
- whether after hitting the page with URL in bookmarkable form it should be
redirected to hybrid URL - needed for ajax to work properly after page refreshpublic HybridUrlCodingStrategy(java.lang.String mountPath, java.lang.Class pageClass)
mountPath
- pageClass
- Method Detail |
---|
protected boolean isRedirectOnBookmarkableRequest()
protected boolean alwaysRedirectWhenPageMapIsSpecified()
public IRequestTarget decode(RequestParameters requestParameters)
IRequestTargetUrlCodingStrategy
requestParameters
- the request parameters
IRequestTargetUrlCodingStrategy.decode(org.apache.wicket.request.RequestParameters)
protected IRequestTarget handleExpiredPage(java.lang.String pageMapName, java.lang.Class pageClass, int trailingSlashesCount, boolean redirect)
/context/hybrid-mount.0.23?wicket:interface=...
. The
default behavior is to throw a PageExpiredException
.
This method can be overwritten to, for example, return the user to a new instance of the
bookmarkable page that was mounted using hybrid strategy - this, however, should only be used
in cases where the page expects no page parameters because they are no longer available.
pageMapName
- page map name this page is mounted inpageClass
- class of mounted pagetrailingSlashesCount
- count of trailing slsahes in the urlredirect
- whether or not a redirect should be issued
public static void setInitialPageParameters(Page page, PageParameters pageParameters)
page
- pageParameters
- public static PageParameters getInitialPagePageParameters(Page page)
page
-
public java.lang.CharSequence encode(IRequestTarget requestTarget)
IRequestTargetUrlCodingStrategy
requestTarget
- the request target to encode
IRequestTargetUrlCodingStrategy.encode(org.apache.wicket.IRequestTarget)
public boolean matches(IRequestTarget requestTarget)
IRequestTargetUrlCodingStrategy
requestTarget
- the request target
IRequestTargetUrlCodingStrategy.matches(org.apache.wicket.IRequestTarget)
protected HybridUrlCodingStrategy.PageInfoExtraction extractPageInfo(java.lang.String url)
url
-
protected java.lang.String getBeginSeparator()
protected java.lang.String getEndSeparator()
protected java.lang.String addPageInfo(java.lang.String url, HybridUrlCodingStrategy.PageInfo pageInfo)
url
- pageInfo
-
public boolean matches(java.lang.String path)
AbstractRequestTargetUrlCodingStrategy
matches
in interface IRequestTargetUrlCodingStrategy
matches
in class AbstractRequestTargetUrlCodingStrategy
AbstractRequestTargetUrlCodingStrategy.matches(java.lang.String)
public java.lang.String toString()
toString
in class java.lang.Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |