2015-03-31 95 views
13

我在Spring MVC方面没有太多经验,我有以下几点关于什么是控制器方法可返回的valids返回类型什么是Spring MVC控制器方法的有效返回类型?

所以我知道用户产生的HttpRequest接收和DispatcherServlet的可分派此请求到一个特定的控制器类处理。

控制器类是这样的:

@Controller 
public class AccountController { 

    @RequestMapping("/showAccount") 
    public String show(@RequestParam("entityId") long id, Model model) { 
     ... 
    } 

    ....................................... 
    ....................................... 
    ....................................... 
} 

所以我知道每个方法处理特定请求,该处理请求是由@RequestMapping注解指定。

我也知道,该方法返回一个字符串对象,它是逻辑视图名称(即再由视图解析器解决渲染视图)

所以,在这个阶段,我认为一个控制器类的方法只返回字符串对象。但我不确定。也许像这样的方法可以返回一些不同类型的对象?

+1

有很多返回类型,你可以返回你需要的东西,检查这个http://stackoverflow.com/questions/7383622/spring-mvc-controllers-return-type – 2015-03-31 10:05:25

+0

Craig Walls的“Spring in Action”很棒在解释Spring MVC – 2015-03-31 10:10:30

+0

这是在Spring文档中非常全面的介绍:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-return-types – 2015-03-31 10:15:10

回答

14

有许多返回类型可用于处理程序方法,它是通过@RequestMapping注释内部控制器等:

  • ModelAndView的(类)

  • 模型(接口)

  • 地图
  • 字符串
  • void
  • 查看
  • HttpEntity<?>ResponseEntity<?>
  • HttpHeaders

和更多..... See Docs

每个返回类型有它一样,如果你使用的是特定的字符串使用那么就意味着返回查看名称和此视图名称将由ViewResolver解决。如果您不想返回任何视图名称,请提及返回类型void。如果你想设置视图名称并且想发送一些对象,使用ModelAndView作为返回类型。

请通过文档,你也会得到什么样的方法参数可以传递给处理方法。

2

你必须在doc

直接回答以一个特殊说明的

如果该方法与注释@ResponseBody,返回类型为 写入响应HTTP主体。使用HttpMessageConverters将返回值 转换为声明的方法参数类型。

当方法annoated与@ResponseBody,返回类型可以是任何自定义类型,任何Java POJO,该框架将被转化为相应的repsentation JSON,XML等,并写回响应机构

相关问题