行。基本上我想要做的是将HttpServletRequest
的对象列表设置为这样的参数:
request.setAttribute("Param", objs);
然后我想在过滤器中修改这些对象的列表,这样我就可以删除一些用户无权查看的内容。
像这样:public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
request.removeAttribute("Param");
}
但它没有做任何事情。有人能帮助我吗?
答案 0 :(得分:0)
在过滤器中{/ 1}}之后修改之后的请求属性
答案 1 :(得分:0)
(AFAIK)除非有某个视图公开该特定属性,否则最终用户将无法在请求对象中看到您的任何对象。这意味着您必须在jsp(如html)或json字符串等中显示该特定请求属性...
答案 2 :(得分:0)
你的问题很混乱。您可以明智地设置请求属性的唯一地方是在调用doFilter():
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setAttribute("Param", objs);
chain.doFilter(request, response);
request.removeAttribute("Param");
}
或者在servlet本身中,它作为所有doFilter()
调用的最终结果执行,因此在
正如其他人所指出的那样,之后进行清理并不是必要的。
答案 3 :(得分:0)
在我的情况下,我使用类似this solution的近似值解决了它。
使用请求包装器,您可以覆盖setAttribute方法,将servlet / beans等插入的值存储在映射中,并在容器刷新请求后保留它们。这样,您可以在doChain()
方法之后从地图中获取值。