RequestCycle.get().urlFor(pageClass, parameters) Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov
On Wed, Dec 10, 2014 at 3:20 PM, Hendy Irawan <he...@soluvas.com> wrote: > Thanks for prompt advice Martin, however please explain more... I commented > that code because I don't know how to construct the redirectUrl String from > a PageProvider, inside RequestMapper.mapRequest? (Or alternatively, from > PageClass + PageParameters) > > Hoping you can shed light on this. > Thanks in advance. > > Hendy > > On Wed, Dec 10, 2014, 20:12 Martin Grigorov-4 [via Apache Wicket] < > ml-node+s1842946n4668717...@n4.nabble.com> wrote: > > > Hi, > > > > To do a "normal" redirect Wicket > > uses javax.servlet.http.HttpServletResponse#sendRedirect() and this sets > > 302 as a code. > > To have better control you should use RedirectRequestHandler, as in your > > commented out code. > > > > Martin Grigorov > > Wicket Training and Consulting > > https://twitter.com/mtgrigorov > > > > On Wed, Dec 10, 2014 at 2:56 PM, Hendy Irawan <[hidden email] > > <http:///user/SendEmail.jtp?type=node&node=4668717&i=0>> wrote: > > > > > I currently have a custom SEO-friendly RequestMapper with the following > > > snippet: > > > > > > @Override > > > public final IRequestHandler mapRequest(Request request) { > > > try { > > > final String userAgent = ((HttpServletRequest) > > > request.getContainerRequest()).getHeader("User-Agent"); > > > final RedirectPolicy redirectPolicy = userAgent != null > > && > > > BotUtils.isBot(userAgent) ? RedirectPolicy.NEVER_REDIRECT : > > > RedirectPolicy.AUTO_REDIRECT; > > > > > > final UrlInfo urlInfo = parseRequest(request); > > > > > > // check if the URL is long enough and starts with the > > > proper segments > > > if (urlInfo != null) > > > { > > > PageComponentInfo info = > > > urlInfo.getPageComponentInfo(); > > > Class<? extends IRequestablePage> pageClass = > > > urlInfo.getPageClass(); > > > PageParameters pageParameters = > > > urlInfo.getPageParameters(); > > > > > > if (info == null) > > > { > > > // if there are is no page instance > > > information > > > // then this is a simple bookmarkable > > URL > > > return processBookmarkable(pageClass, > > > pageParameters, redirectPolicy); > > > } > > > else if (info.getPageInfo().getPageId() != null > > && > > > info.getComponentInfo() == null) > > > { > > > // if there is page instance > information > > > in the URL but no component and > > > listener > > > // interface then this is a hybrid URL > - > > > we need to try to reuse > > > existing page > > > // instance > > > return > processHybrid(info.getPageInfo(), > > > pageClass, pageParameters, > > > null); > > > } > > > else if (info.getComponentInfo() != null) > > > { > > > // with both page instance and > > > component+listener this is a listener > > > interface URL > > > return processListener(info, pageClass, > > > pageParameters); > > > } > > > else if (info.getPageInfo().getPageId() == > null) > > > { > > > return processBookmarkable(pageClass, > > > pageParameters, redirectPolicy); > > > } > > > > > > } > > > return null; > > > } catch (MapperRedirectException e) { > > > log.debug("Redirecting '{}' to canonical page: {}", > > > request.getUrl(), > > > e.getPageProvider()); > > > // return new RedirectRequestHandler(redirectUrl, > > > 301); > > > return new > RenderPageRequestHandler(e.getPageProvider(), > > > RedirectPolicy.ALWAYS_REDIRECT); > > > } > > > } > > > > > > What it does is allow freeform root URI paths, e.g. > > > http://www.tuneeca.com/t-1113012 instead of the longer > > > http://www.tuneeca.com/product/t-1113012 . > > > > > > Now, requests to http://www.tuneeca.com/product/t-1113012 are also > > handled > > > by the same RequestMapper and will be redirected to > > > http://www.tuneeca.com/t-1113012 . > > > > > > However, currently it's using 302 temporary redirect. How to make it > use > > > 301 > > > permanent redirect? > > > > > > Thank you. > > > > > > Hendy > > > > > > > > > -- > > > View this message in context: > > > > > > http://apache-wicket.1842946.n4.nabble.com/How-to-instruct-RenderPageRequestHandler-to-redirect-using-301-Permanent-tp4668716.html > > > Sent from the Users forum mailing list archive at Nabble.com. > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [hidden email] > > <http:///user/SendEmail.jtp?type=node&node=4668717&i=1> > > > For additional commands, e-mail: [hidden email] > > <http:///user/SendEmail.jtp?type=node&node=4668717&i=2> > > > > > > > > > > > > ------------------------------ > > If you reply to this email, your message will be added to the discussion > > below: > > > > > http://apache-wicket.1842946.n4.nabble.com/How-to-instruct-RenderPageRequestHandler-to-redirect-using-301-Permanent-tp4668716p4668717.html > > To unsubscribe from How to instruct RenderPageRequestHandler to redirect > > using 301 Permanent, click here > > < > http://apache-wicket.1842946.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4668716&code=aGVuZHlAc29sdXZhcy5jb218NDY2ODcxNnwxNTI0Njc4NzUy > > > > . > > NAML > > < > http://apache-wicket.1842946.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml > > > > > > > -- > View this message in context: > http://apache-wicket.1842946.n4.nabble.com/How-to-instruct-RenderPageRequestHandler-to-redirect-using-301-Permanent-tp4668716p4668719.html > Sent from the Users forum mailing list archive at Nabble.com. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >