我正在使用Servlet过滤器,试图在该过滤器中获取与当前请求关联的操作。

我的过滤器的相关部分:

private ServletContext context;

public void init(FilterConfig config) throws ServletException {
    this.context = config.getServletContext();
}

protected void doFilter(HttpServletRequest request, HttpServletResponse response,
        FilterChain chain) throws IOException, ServletException {

    ServletActionContext actionContext = new ServletActionContext(context, request, response);

    Action action = actionContext.getAction();
    // action == null

}


我的问题是action最终为空。两个上下文变量都填充了一个值,但是由于某种原因,它找不到该动作。有任何想法吗?谢谢!

最佳答案

当控件通过ActionServlet传递时,将初始化ServletActionContext并正确填充所有必需的变量。

在ActionServlet之前执行过滤器,并且在过滤器方法中创建对象未设置Action

这是主要原因,因为ServletActionContext的某些getter方法未通过ActionServlet并因此未初始化所有属性,因此返回空值。

10-08 08:49