Servlet doFilter setAttributes在Servlet中不可用

时间:2011-12-10 21:19:31

标签: servlets attributes jstl servlet-filters

我尝试在将请求传递给Servlet之前通过doFilter向请求添加一个属性,以便设置JSTL中的值。我只是在过滤器中执行req.setAttribute("b", "blah"),但它似乎没有在JSTL文件中设置。我该怎么做?

2 个答案:

答案 0 :(得分:0)

如果没有看到代码,很难确定根本原因。有几种可能的原因。

  • 您在设置属性后发送重定向,而不是继续使用相同的请求。
  • 您正在使用错误的名称访问该属性(区分大小写!)。
  • 您以错误的方式访问该属性。
  • 在请求处理中,某个地方已覆盖该属性。
  • 有一个页面范围属性,名称相同,没有任何值。
  • 你误解了结果。

顺便说一下,没有“JSTL文件”这样的东西。也许你的意思是“JSP文件”。

答案 1 :(得分:-2)

问题是doFilter方法使用ServletRequest而不是HttpServletRequest,这是setAttribute方法的方法。我的大部分过滤器都是这样的:

public void doFilter(ServletRequest servletRequest, 
                     ServletResponse servletResponse, 
                     FilterChain chain) throws IOException, ServletException {

    HttpServletRequest request = (HttpServletRequest) servletRequest;
    HttpServletResponse response = (HttpServletResponse) servletResponse;                                                                      

    // do what you must...

    chain.doFilter(servletRequest, servletResponse);

}