gpt4 book ai didi

java - spring mvc 中的任意返回类型

转载 作者:行者123 更新时间:2023-11-30 04:27:19 30 4
gpt4 key购买 nike

ExceptionHandler 可以返回 ModelAndView、Model、Map 等。是否可以返回我自己类型的对象并注册一些转换器,可以将我的类型转换为 Spring 可以理解的类型之一?例如:

@ExceptionHandler
public MyType handle(Exception e) {
...
}

@SomeTransformer
public Map convert(MyType myObject) {
...
}

最佳答案

ExceptionHandler 方法遵循与 Controller 方法相同的约定。 Here's Spring 3.1 中 Spring MVC Controller 方法所有支持的返回类型的列表。您最感兴趣的是项目符号 #7。

相关部分:

16.3.3.2 Supported method return types

以下是支持的返回类型:

  • 一个 ModelAndView 对象,其中模型隐式地通过命令对象和 @ModelAttribute 注释的引用数据访问器方法的结果进行了丰富。

  • 模型对象,其 View 名称通过 RequestToViewNameTranslator 隐式确定,模型隐式地使用命令对象和 @ModelAttribute 注释的引用数据访问器方法的结果进行丰富。

  • 用于公开模型的 Map 对象,通过 RequestToViewNameTranslator 隐式确定 View 名称,并使用命令对象和 @ModelAttribute 注释的引用数据访问器方法的结果隐式丰富模型。

  • 一个 View 对象,其模型通过命令对象和 @ModelAttribute 注释的引用数据访问器方法隐式确定。处理程序方法还可以通过声明模型参数以编程方式丰富模型(参见上文)。

  • 一个字符串值,被解释为逻辑 View 名称,模型通过命令对象和 @ModelAttribute 注释的引用数据访问器方法隐式确定。处理程序方法还可以通过声明模型参数以编程方式丰富模型(参见上文)。

  • 如果方法本身处理响应(通过直接写入响应内容,为此目的声明 ServletResponse/HttpServletResponse 类型的参数),或者如果 View 名称应该通过 RequestToViewNameTranslator 隐式确定(不是在处理程序方法签名中声明响应参数)。

  • 如果该方法使用 @ResponseBody 注解,则返回类型将写入响应 HTTP 正文。返回值将使用 HttpMessageConverters 转换为声明的方法参数类型。请参阅第 16.3.3.5 节“使用 @ResponseBody 注释映射响应正文”。

  • 一个 HttpEntity 或 ResponseEntity 对象,用于提供对 Servlet 响应 HTTP header 和内容的访问。实体主体将使用 HttpMessageConverters 转换为响应流。请参阅第 16.3.3.6 节“使用 HttpEntity”。

任何其他返回类型都被视为要公开给 View 的单个模型属性,使用在方法级别通过 @ModelAttribute 指定的属性名称(或基于返回类型类名称的默认属性名称)。该模型通过命令对象和 @ModelAttribute 注释的引用数据访问器方法的结果隐式丰富。

关于java - spring mvc 中的任意返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15530735/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com