Hi Dariusz, Thanks for the input. After some coding and reading in the Struts 2.0.2 sourcecode I got this to work.
In general it seems that Struts2 uses two methods from the request to examine URI (in this order): - request.getServletPath() - request.getRequestURI() The real trick is, as you suggested, to create my own instance of HttpServletRequest and implement set-methods for those two, manipulate the values and pass on the reference to filter.doFilter(req, res). The nice thing is that there is a javax.servlet.http.HttpServletRequestWrapper class that do a base implementation of the request. Extend that and implement setServletPath(String arg0) and setRequestURI(String arg0) methods. Very nice! ------ Martin Gainty- Thanks for your input to my question. As you understand of my answer above, a redirect from an JSP page is way to late in the request sequence. The thing with keywords is to implement Wiki functionallity into a normal Struts built website. If a client request http://somesite.com/keyword my filter ask the WikiEngine if it recognizes the keyword. If it does, I modify the request to my template.action instead. I store the Wiki keyword as an request attribute to be picked up and presented by the template. By this I can serve simple easy editable pages in Wiki format and use Struts for more advanced pages. An important goal is to hide the redirect for a web browser so when a user bookmarks a page, the url point to a keyword and not an ugly redirect. ------ Thanks again for the help! Regards, Ove Oldberg > -----Ursprungligt meddelande----- > Från: Dariusz Wojtas [mailto:[EMAIL PROTECTED] > Skickat: den 7 december 2006 09:39 > Till: Struts Users Mailing List > Ämne: Re: Struts2: How can I make a Filter redirecting to > struts actions > > Hi, > > If your filter is called before the struts filter, then what about > preparing your own HttpServletRequest instance (some wrapper) and > passing it deeper into doFilter(..)? > You could copy all properties of the original request but change the > URI (or whatever property is responsible for it). > The next filter/servlet would be fooled by this switch and their > calculations (ie. finding what action should be executed) would be > done on data prepared by you. > > Best regards > Dariusz Wojtas, Poland > > On 12/7/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > Hi everybody, > > I have experimented with a filter that triggers for keywords on the > > request URL > > and when found it should redirect to a struts action that > processes the > > keyword. > > > > My dilemma is that I don't want to use: > > response.sendRedirect("/some.action"); > > becoz redirect should be done internally in the servlet > container, not > > via browser. > > > > I have tested: > > > request.getRequestDispatcher("/some.action").forward(request, > response); > > and it don't work. I guess becoz an action mapping is not a > servlet, an > > JSP page is. > > > > Does anyone have an idea how to solve this? Any input welcome! > > > > One approach could be to inherit: > > org.apache.struts2.dispatcher.FilterDispatcher > > and override doFilter() method and insert my keyword code. > Kinda ugly > > thou. > > > > Regardings, > > Ove Oldberg, Sweden. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]