我正在使用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并因此未初始化所有属性,因此返回空值。