Spring MVC 控制器方法的有效 return 类型是什么?
What are valid return types of a Spring MVC controller method?
我在 Spring MVC 方面经验不多,我对 控制器方法可以 return[=] 的有效 return 类型有以下了解33=].
所以我知道用户生成了一个 HttpRequest,由 DispatcherServlet 接收和处理,将此请求分派给特定的控制器 class.
一个控制器class是这样的:
@Controller
public class AccountController {
@RequestMapping("/showAccount")
public String show(@RequestParam("entityId") long id, Model model) {
...
}
.......................................
.......................................
.......................................
}
所以我知道每个方法处理一个特定的请求,并且处理的请求由 @RequestMapping 注释指定。
我也知道方法 return 一个 String 对象,它是 逻辑视图名称 (然后被解析由 视图解析器 渲染视图)
所以,在这个阶段,我认为控制器classreturn的一个方法只有String对象。但我不确定。也许像这样的方法也可以 return 一些不同类型的对象?
您在 doc
中有直接答案
特别注意
If the method is annotated with @ResponseBody, the return type is
written to the response HTTP body. The return value will be converted
to the declared method argument type using HttpMessageConverters.
当使用 @ResponseBody 注释方法时,return 类型可以是框架将转换的任何自定义类型,任何 Java pojo到适当的表示 JSON、XML 等并写回响应正文
你可以看看AnnotationMethodHandlerAdapter#getModelAndView。此方法有几个基于 return 类型的条件来选择如何处理 returned 值。
有许多return类型可用于在控制器内部由@RequestMapping
注释的Handler方法,例如:
ModelAndView (Class)
模型(界面)
- 地图
- 字符串
- 无效
- 查看
HttpEntity<?>
或 ResponseEntity<?>
HttpHeaders
还有更多......See Docs
每个 return 类型都有其特定用途,例如:如果您使用的是字符串,则表示 return 视图名称,并且此视图名称将由 ViewResolver
解析。如果您不想 return 提及任何视图名称 return,请键入 void
。如果您想设置视图名称以及发送一些数据以查看使用 ModelAndView
作为 return 类型。
请仔细阅读文档,您还将了解可以在处理程序方法中传递哪种方法参数。
我在 Spring MVC 方面经验不多,我对 控制器方法可以 return[=] 的有效 return 类型有以下了解33=].
所以我知道用户生成了一个 HttpRequest,由 DispatcherServlet 接收和处理,将此请求分派给特定的控制器 class.
一个控制器class是这样的:
@Controller
public class AccountController {
@RequestMapping("/showAccount")
public String show(@RequestParam("entityId") long id, Model model) {
...
}
.......................................
.......................................
.......................................
}
所以我知道每个方法处理一个特定的请求,并且处理的请求由 @RequestMapping 注释指定。
我也知道方法 return 一个 String 对象,它是 逻辑视图名称 (然后被解析由 视图解析器 渲染视图)
所以,在这个阶段,我认为控制器classreturn的一个方法只有String对象。但我不确定。也许像这样的方法也可以 return 一些不同类型的对象?
您在 doc
中有直接答案特别注意
If the method is annotated with @ResponseBody, the return type is written to the response HTTP body. The return value will be converted to the declared method argument type using HttpMessageConverters.
当使用 @ResponseBody 注释方法时,return 类型可以是框架将转换的任何自定义类型,任何 Java pojo到适当的表示 JSON、XML 等并写回响应正文
你可以看看AnnotationMethodHandlerAdapter#getModelAndView。此方法有几个基于 return 类型的条件来选择如何处理 returned 值。
有许多return类型可用于在控制器内部由@RequestMapping
注释的Handler方法,例如:
ModelAndView (Class)
模型(界面)
- 地图
- 字符串
- 无效
- 查看
HttpEntity<?>
或ResponseEntity<?>
HttpHeaders
还有更多......See Docs
每个 return 类型都有其特定用途,例如:如果您使用的是字符串,则表示 return 视图名称,并且此视图名称将由 ViewResolver
解析。如果您不想 return 提及任何视图名称 return,请键入 void
。如果您想设置视图名称以及发送一些数据以查看使用 ModelAndView
作为 return 类型。
请仔细阅读文档,您还将了解可以在处理程序方法中传递哪种方法参数。