java - Why Doesn't Tuckey UrlRewrite Filter call chain.doFilter after a rule is matched? -


using spring framework here...

i created filter change response body of css files , if call url directly runs. however, if urlrewrite rule matched filter skipped.

example: in web.xml:

<filter>     <filter-name>urlrewritefilter</filter-name>     <filter-class>org.tuckey.web.filters.urlrewrite.urlrewritefilter</filter-class>     <!-- skipping init params here brevity --> </filter> <filter-mapping>     <filter-name>urlrewritefilter</filter-name>     <url-pattern>/*</url-pattern> </filter-mapping>  <filter>     <filter-name>cssfilter</filter-name>     <filter-class>org.springframework.web.filter.delegatingfilterproxy</filter-class> </filter>     <filter-mapping>     <filter-name>cssfilter</filter-name>     <url-pattern>*css</url-pattern> </filter-mapping> 

there mapping set in urlrewrite.xml:

<rule>     <from>/styles-special/(.*)$</from>     <to last="true">/styles/$1</to> </rule> 

(we need number of reasons)

so, *.css file path starts w/ "/styles-special/" rewritten "/styles/" , cssfilter won't called, *.css file path starts w/ "/styles/" run through cssfilter expected.

i've tried changing url-pattern cssfilter number of different options, same result. seems me tuckey urlrewrite filter doesn't call chain.dofilter() after rewrite, maybe it's more complicated that?

any idea issue might here? expected functionality? workarounds? ...maybe interceptor or controller way go here?

thanks in advance advice on this!!


note: using following (as suggested axtavt):

<dispatcher>request</dispatcher> <dispatcher>forward</dispatcher> 

fixes issue w/ chaining , filter run. however, following error:

java.lang.illegalstateexception: no content @ org.mortbay.jetty.httpgenerator.addcontent(httpgenerator.java:106) @ org.mortbay.jetty.abstractgenerator$output.write(abstractgenerator.java:644) @ org.mortbay.jetty.abstractgenerator$output.write(abstractgenerator.java:579) 

here's code snippet filter:

public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception {     httpservletrequest httprequest = (httpservletrequest) request;     httpservletresponse httpresponse = (httpservletresponse) response;      outputstream out = httpresponse.getoutputstream();     genericresponsewrapper wrapper = new genericresponsewrapper(httpresponse);      chain.dofilter(request, wrapper);      if(log.isdebugenabled()) log.debug("dofilter: chain");      string respbody = new string(wrapper.getdata()); // throws error ... 

when tuckey urlrewrite filter rewrites url, forwards request new url instead of passing down filter chain. default filters not applied forwarded requests, need configure it:

<filter-mapping>      <filter-name>cssfilter</filter-name>      <url-pattern>*css</url-pattern>      <dispatcher>request</dispatcher>      <dispatcher>forward</dispatcher> </filter-mapping> 

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -