We use Wicket 1.4.12. On Tue, Nov 30, 2010 at 5:43 PM, Igor Vaynberg <igor.vaynb...@gmail.com> wrote: > you must be using an old wicket version...upgrade to latest 1.4.x > > -igor > > On Tue, Nov 30, 2010 at 8:34 AM, Krzysztof Kowalczyk > <kowalczyk.krzysz...@gmail.com> wrote: >> As I have already written in previous mail (pointing to exact line >> that cause the errors) - Wicket is falling because it handles >> forwardUrl in incorrect way. It tries to remove "/" and filterPath >> from forwardUrl even though forwardUrl does not contain filterPath. I >> guess that it is because of an assumption that only wicket exists in >> application and no other framework has influence on forwardUrl. I >> don't know what are other cases that are handled by those lines, but >> forwardUrl can have any value and Wicket assume some concrete value. >> >> On Tue, Nov 30, 2010 at 5:24 PM, Igor Vaynberg <igor.vaynb...@gmail.com> >> wrote: >>> first figure out why its failing - why is wicket generating a wrong >>> url, and then you can determine if its a bug in wicket or somewhere in >>> your configuration. >>> >>> -igor >>> >>> On Tue, Nov 30, 2010 at 2:21 AM, Krzysztof Kowalczyk >>> <kowalczyk.krzysz...@gmail.com> wrote: >>>> Hi, >>>> >>>> We have existing urls in a form: >>>> >>>> /long,and,complex,title,id/new_opinion >>>> /long,and,complex,title,id/something >>>> >>>> or sometimes >>>> >>>> /long,title/id/new_opinion >>>> >>>> The links like "/long,and,complex,title" are managed by fast and >>>> scalable view, and are stateless. Now we are using Wicket in the same >>>> war. It is mounted to "/cms". >>>> >>>> We are trying to replace forms, that are pure evil in the first >>>> technology with wicket based forms. But we need to keep the links >>>> untouched. >>>> >>>> So I created UrlRewrite (http://www.tuckey.org/urlrewrite/) rules: >>>> >>>> <urlrewrite use-query-string="true"> >>>> >>>> <rule> >>>> <from>^/(.*),(\d+)/new_opinion$</from> >>>> <to>/cms/new_opinion/id/$2/url/$1</to> >>>> </rule> >>>> >>>> <rule> >>>> <from>^/(\?wicket.*)</from> >>>> <to>/cms/$1</to> >>>> </rule> >>>> ... >>>> >>>> >>>> I have a wicket page - that is mounted on "/new_opinion" with enhanced >>>> HybridUrlCodingStrategy with: >>>> - redirectOnBookmarkableRequest = false >>>> >>>> First rule forwards the request to proper place. Wicket gets the >>>> correct requestUri and all the stuff. But the rule does not work if we >>>> have redirectOnBookmarkableRequest = true because Wicket constructs >>>> wrong urls in ServletWebRequest.getRelativePathPrefixToWicketHandler : >>>> >>>> if (!Strings.isEmpty(forwardUrl)) >>>> { >>>> // If this is an error page, this will be /mount or >>>> /?wicket:foo >>>> relativeUrl = forwardUrl.substring(1); >>>> relativeUrl = >>>> relativeUrl.substring(filterPath.length()); >>>> } >>>> >>>> before this fragment Wicket has correct link, after this we get: >>>> "g,and,complex,title,id/new_opinion", or errors (sometimes the link is >>>> shorter and I get array index out of bounds). If method does not throw >>>> exception it returns wrong number of ../ . Unfortunately >>>> redirectOnBookmarkableRequest = false does not solve the problem as >>>> the second rule catches Wicket that are redirected if they hit >>>> bookmarkable page. So this fragment need to be fixed in order to have >>>> working bookmarkable links with UrlRewrite. >>>> >>>> My temporary workaround is custom delegating WebRequest with small hack: >>>> >>>> public String getRelativePathPrefixToWicketHandler() { >>>> HttpServletRequest httpRequest = getHttpServletRequest(); >>>> >>>> String forwardUrl = >>>> (String)httpRequest.getAttribute("javax.servlet.forward.servlet_path"); >>>> final String filterPath = >>>> (String)httpRequest.getAttribute(WicketFilter.FILTER_PATH_ATTR); >>>> >>>> if (!Strings.isEmpty(forwardUrl)) >>>> { >>>> int count = forwardUrl.split("/").length; >>>> >>>> String string = ""; >>>> >>>> for (int i = 1; i < count; i++) { >>>> string += "../"; >>>> } >>>> >>>> return string + filterPath; >>>> }else { >>>> return wrappedReqest.getRelativePathPrefixToWicketHandler(); >>>> } >>>> } >>>> >>>> I guess it will not work in all cases though... >>>> >>>> If there is a different way of doing url rewriting? If not, I consider >>>> it a bug in Wicket. >>>> >>>> Regards, >>>> Krzysztof Kowalczyk >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>> >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >
--------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org