Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc spring中@ModelAttribute和@SessionAtrubutes之间的区别是什么_Spring Mvc - Fatal编程技术网

Spring mvc spring中@ModelAttribute和@SessionAtrubutes之间的区别是什么

Spring mvc spring中@ModelAttribute和@SessionAtrubutes之间的区别是什么,spring-mvc,Spring Mvc,在浏览了一段时间并访问了几个网站之后,我无法获得清晰的信息。所以请任何人解释一下@modeldattribute到底做了什么SpringAPI文档通常都很好,所以我总是建议在尝试理解框架时从这一点开始 @ModelAttribute的Javadocs说明如下: @RequestMapping("/doFoo") public void doFoo(@ModelAttribute("myValue")Foo foo) { Do some stuff here... } 绑定方法参数或方

在浏览了一段时间并访问了几个网站之后,我无法获得清晰的信息。所以请任何人解释一下@modeldattribute到底做了什么

SpringAPI文档通常都很好,所以我总是建议在尝试理解框架时从这一点开始

@ModelAttribute的Javadocs说明如下:

@RequestMapping("/doFoo") 
public void doFoo(@ModelAttribute("myValue")Foo foo)
{
    Do some stuff here...
}
绑定方法参数或方法返回值的注释 指向命名模型属性,该属性公开给web视图。支持 对于{@link RequestMapping}带注释的处理程序类

一般来说,
@modeldattribute
是控制器声明方法的一种方式,其返回值由Spring自动绑定到模型中,并定义由Spring自动绑定到方法参数中的模型值

例如:

@ModelAttribute("myValue")
public Foo myValue()
{
   return new MyFoo();
}
这本质上是对Spring说的:

每当此控制器映射到服务请求时,调用此方法并将返回值绑定到键“myValue”下的模型中

这与:

@RequestMapping("/foo")
public ModelAndView foo()
{
    ModelAndView mav = new ModelAndView("myView");
    mav.addObject("myValue", new Foo());
    return mav;
}
@RequestMapping("/doFoo") 
public void doFoo(ModelAndView modelAndView)
{
    Foo foo = (Foo)modelAndView.getModel().get("myValue");
    Do some stuff here...
}
这里没有正确和错误的方法,它只是促进了构建模型的不同方法

@modeldattribute
注释也可用于控制器的方法参数。因此,您可以拥有以下内容:

@RequestMapping("/doFoo") 
public void doFoo(@ModelAttribute("myValue")Foo foo)
{
    Do some stuff here...
}
同样,这是Spring提供的一种方便的方法,以促进实现控制器的不同方式。这与:

@RequestMapping("/foo")
public ModelAndView foo()
{
    ModelAndView mav = new ModelAndView("myView");
    mav.addObject("myValue", new Foo());
    return mav;
}
@RequestMapping("/doFoo") 
public void doFoo(ModelAndView modelAndView)
{
    Foo foo = (Foo)modelAndView.getModel().get("myValue");
    Do some stuff here...
}
@SessionAttribute
的工作方式完全相同,但顾名思义,该值是绑定到用户的HTTPSession中或从中读取的,而不是模型