不能在使用 HttpServletRequestWrapper 时发送 jsp 参数



我使用Tomcat7。我的项目结构是:

  • AS1.jsp

  • AS2.jsp

web.xml的内容是:

  <filter-mapping>  
            <filter-name>filter1</filter-name>  
            <url-pattern>/as1.jsp</url-pattern>  
        </filter-mapping>

filter1 在 HttpServletRequestWrapper 中使用:

...  
   RequestWrapper requestWrapper = new RequestWrapper(req);  
   requestWrapper.setParameter("params", new String[]{Item.getParams()});   
   chain.doFilter(requestWrapper, response);  
......  

as1.jsp的内容是:

hi <br/>  
<jsp:include page="as2.jsp">  
        <jsp:param name="test" value="true" />            
</jsp:include>  

as2.jsp的内容是:

as2 runed  
<br/>  
test:<%= request.getParameter("test") %>  

当我部署项目时,我得到这个结果:

hi  
as2 runed  
test:null  

当删除HttpServletRequestWrapper filter1时,我得到正确的结果:

hi  
as2 runed  
test:true  

请帮助我,如何在filter1HttpServletRequestWrapper request.getParameter("test")?谢谢。

看起来Filter RequestWrapper正在覆盖.getParameter()方法而不是委托给原始请求。

最新更新