@ModelAttribute和HttpServletRequest属性之间的区别

时间:2014-01-04 22:46:19

标签: spring spring-mvc

我使用spring mvc,我想了解一些东西 在这段代码中:

    @RequestMapping(value="/enregistrerLostCard") 
public  @ResponseBody
void enregistrerLostCard(@ModelAttribute(value="auth") Auth auth2, HttpServletRequest request) {    

    Auth auth1 = (Auth) request.getAttribute("auth");

    System.out.println(auth2.getLogin()); //print the right value
    System.out.println(auth1.getLogin()); //i got nullpointer exception

}

@ModelAttribute(value="auth")request.getAttribute("auth")不一样?

1 个答案:

答案 0 :(得分:3)

HttpServletRequestServlet容器管理对象。其属性存储包含在Servlet容器处理请求的任何部分中有用的属性。

ModelModelMapModelAndView等由Spring MVC(DispatcherServlet堆栈)管理。其中的属性对应用程序的Spring端很有用。

在某些情况下,如果需要,Model属性将插入HttpServletRequest属性中。当您的处理程序方法返回String值作为视图名称时,通常会发生这种情况。模型属性将作为HttpServletRequest属性推送,以便可以在视图中使用它们,例如,在jsps中。

相关: