SpringMVC不设置request.setAttribute也可以在jsp中的el表达式里取到值?

SpringMVC两个控制器类,注解都相同,但是一个需要设置request.setAttribute才能在jsp中el表达式里取到值。
比如${anti.id}必须设置request.setAttribute才可以取到id值。

@RequestMapping("/anti_list/{pageNo}")
public String list(HttpServletRequest request, AntiForgery anti, @PathVariable Integer pageNo) {
 request.setAttribute("anti", anti); // 只多了这一句不同
 logger.debug("anti_list");
 return "/msg/antiforgery_list";
} 

但是另一个没有设置request.setAttribute,但是也能在jsp中的el表达式里取到值。
比如${article.id}可以直接取到值。但并没有设置request.setAttribute。

@RequestMapping("/anti_list/{pageNo}")
public String list(HttpServletRequest request, Article article, @PathVariable Integer pageNo) {
   logger.debug("article_list");
   return "/msg/article_list";
} 

两个方法分别在不同控制器类中,但是取值一个需要request.setAttribute设置,另一个不需要。这是为什么呢?

阅读 6.4k
4 个回答

我感觉是,SpringMVC可能会连方法参数也自动在页面中访问得到。

检查一下是否有 session 级别的 article.id

可以使用分别使用如下的 el 表达式试一下:

${ session.article.id } 或者 ${ request.article.id }

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题