我在Spring MVC上没有太多经验,我有以下关于控制器方法可以返回的valids返回类型的内容。
所以我知道用户生成一个 HttpRequest ,由 DispatcherServlet 接收和处理,将此请求分派给特定的控制器类。
控制器类是这样的:
@Controller
public class AccountController {
@RequestMapping("/showAccount")
public String show(@RequestParam("entityId") long id, Model model) {
...
}
.......................................
.......................................
.......................................
}
所以我知道每个方法都处理一个特定的请求,并且处理的请求是由 @RequestMapping 注释指定的。
我也知道该方法返回一个 String 对象,即逻辑视图名称(然后由视图解析器解析)渲染视图)
所以,在这个阶段,我认为控制器类的方法只返回 String 对象。但我不确定。也许像这样的方法也可以返回一些不同类型的对象?
答案 0 :(得分:20)
Handler方法有许多返回类型可供控制器内的@RequestMapping
注释,如:
ModelAndView(Class)
模型(界面)
HttpEntity<?>
或ResponseEntity<?>
HttpHeaders
以及更多..... See Docs
每个返回类型都有其特定用途,例如:如果您使用的是String,则表示返回View Name,此视图名称将由ViewResolver
解析。如果您不想返回任何视图名称,请提回返回类型为void
。如果要设置视图名称以及要发送一些数据以查看使用ModelAndView
作为返回类型。
请查看文档,您还将了解可以在处理程序方法中传递哪种方法参数。
答案 1 :(得分:2)
您可以在doc
中找到直接答案特别注意
如果使用@ResponseBody注释该方法,则返回类型为 写入响应HTTP正文。返回值将被转换 使用HttpMessageConverters到声明的方法参数类型。
当使用 @ResponseBody 对方法进行处理时,返回类型可以是任何自定义类型,任何Java pojo,框架将转换为适当的表示JSON,XML等并写回回应机构
答案 2 :(得分:1)
你可以看一下AnnotationMethodHandlerAdapter#getModelAndView。此方法有几个基于返回类型的条件,用于选择如何处理返回值。