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对象中的选定视图来执行此操作
现在,在这个阶段,视图从请求范围
访问用户表单
(如上面的示例所示)