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 命令对象是否自动添加到模型?_Spring_Spring Mvc_Spring Boot - Fatal编程技术网

Spring 命令对象是否自动添加到模型?

Spring 命令对象是否自动添加到模型?,spring,spring-mvc,spring-boot,Spring,Spring Mvc,Spring Boot,我有这样一个控制器方法: @RequestMapping("/hello") public String hello(UserForm user) { return "hello"; } Hello, ${userForm.name}! 它在UserForm命令对象中接收一些请求参数。但是我没有编写任何代码将对象添加到模型中。不过,在视图hello.jsp中,我可以访问数据,如下所示: @RequestMapping("/hello") public String hello(Use

我有这样一个控制器方法:

@RequestMapping("/hello")
public String hello(UserForm user) {
    return "hello";
}
Hello, ${userForm.name}!
它在
UserForm
命令对象中接收一些请求参数。但是我没有编写任何代码将对象添加到模型中。不过,在视图
hello.jsp
中,我可以访问数据,如下所示:

@RequestMapping("/hello")
public String hello(UserForm user) {
    return "hello";
}
Hello, ${userForm.name}!

这是否意味着Spring MVC会自动将命令对象添加到模型中?

您不需要将
@modeldattribute
作为参数来使用
Bean


您需要使用
@modeldattribute
model.addAttribute()
将默认数据加载到您的模型中,例如从数据库加载数据。

现实世界中的大多数Spring控制器都接受许多不同类型的参数-路径变量、URL参数、请求头、,请求主体,有时甚至是整个HTTP请求对象。这为创建API提供了一种灵活的机制。Spring非常擅长将这些参数解析为Java类型,只要有一个ObjectMapper(如Jackson)配置来处理反序列化

RequestMappingHandlerAdapter确保从HttpServletRequest解析方法的参数

在处理程序方法之前(或期间)创建的弹簧模型数据 在下一个视图之前,执行被复制到HttpServletRequest 被渲染

到目前为止,Spring已经处理了HTTP请求,并根据方法的返回值创建了ModelAndView对象。另外,请注意,不需要从控制器方法返回ModelAndView实例。您可以返回一个视图名、一个ResponseEntity或一个将被转换为JSON响应的POJO等

ServletInvocableHandlerMethod invocableMethod 
  = createInvocableHandlerMethod(handlerMethod);
if (this.argumentResolvers != null) {
    invocableMethod.setHandlerMethodArgumentResolvers(
      this.argumentResolvers);
}
if (this.returnValueHandlers != null) {
    invocableMethod.setHandlerMethodReturnValueHandlers(
      this.returnValueHandlers);
}
ReturnValueHandler对象是HandlerMethodReturnValueHandler对象的组合。还有许多不同的值处理程序可以处理方法的结果,以创建适配器所需的ModelAndViewobject

然后,它必须呈现用户将在浏览器中看到的HTML页面。它基于模型和封装在ModelAndView对象中的选定视图来执行此操作

现在,在这个阶段,视图从
请求范围
访问
用户表单
(如上面的示例所示)