Sounds good - I just saw the commit. Thanks!
On Tue, Feb 23, 2010 at 1:28 AM, Peter Ledbrook <[email protected]> wrote: >> This is interesting. The OncePerRequestFilter was just copied from >> Spring - did they not have the same issue then? > > Here's the latest code I just grabbed from src.springsource.org: > > > public final void doFilter(ServletRequest request, ServletResponse > response, FilterChain filterChain) > throws ServletException, IOException { > > if (!(request instanceof HttpServletRequest) || !(response > instanceof HttpServletResponse)) { > throw new ServletException("OncePerRequestFilter just > supports HTTP > requests"); > } > HttpServletRequest httpRequest = (HttpServletRequest) request; > HttpServletResponse httpResponse = (HttpServletResponse) > response; > > String alreadyFilteredAttributeName = > getAlreadyFilteredAttributeName(); > if (request.getAttribute(alreadyFilteredAttributeName) != null > || > shouldNotFilter(httpRequest)) { > // Proceed without invoking this filter... > filterChain.doFilter(request, response); > } > else { > // Do invoke this filter... > request.setAttribute(alreadyFilteredAttributeName, > Boolean.TRUE); > try { > doFilterInternal(httpRequest, httpResponse, > filterChain); > } > finally { > // Remove the "already filtered" request > attribute for this request. > > request.removeAttribute(alreadyFilteredAttributeName); > } > } > } > > Note that they now remove the request attribute. I'll add that. > > Cheers, > > Peter >
