【问题标题】:Returning null from a spring mvc controller method从 spring mvc 控制器方法返回 null
【发布时间】:2012-11-09 16:35:23
【问题描述】:

我已阅读 Spring 文档,但无法找到有关 Spring MVC 控制器方法返回 null 的预期行为(返回类型为 String)的相关信息。

有人可以回复或指导我查阅相关文件吗?或者换句话说,从 Spring MVC 控制器方法返回 null 有什么好处?

【问题讨论】:

  • 您使用的是哪个版本的 spring?您的控制器设置是如何完成的?
  • 您的问题已经在这篇文章中得到解答:stackoverflow.com/questions/6875255/…
  • 杰罗姆:你一定误读了我的问题。您提供的链接解释了控制器将如何解析视图名称。我的问题是:“从控制器方法返回 null 有什么好处?”
  • Santosh:我使用 Spring 的当前版本,即 3.1,并且我依赖 Spring Roo 的默认配置进行控制器设置。

标签: spring-mvc controller return-value


【解决方案1】:

在 Spring 2 中,当您从控制器返回 null 时,您是在对 Spring 调度程序说您不希望它搜索视图。

如果您通过直接编写响应内容然后刷新输出流来自己处理响应(例如,您正在管理文件下载),那么您就是这样做的。

如果您没有返回 null,Spring 会转发到一个视图,该视图也会尝试写入响应,从而弄乱您已经写入的数据,或者如果响应已经提交,则会导致异常。

返回 null 是回避 Spring 的视图解析器的一种方式。

很多东西在 Spring 3 中发生了变化,现在可以通过一个返回 void 的 @RequestMapping 注释方法来实现。

如果你有一个 String 的返回类型但你返回 null 我认为它使用默认的 RequestToViewNameTranslator 来将传入的 HttpServletRequest 转换为一个逻辑视图名称,而不是明确提供视图名称。

【讨论】:

    【解决方案2】:

    spring mvc中的返回类型String一般返回你的视图解析器,它可以是你的JSP、html或者任何其他的视图页面。

    http://www.mkyong.com/spring3/spring-3-mvc-hello-world-example/

    假设你想返回一个像“hi”这样的普通字符串,你可以使用@ResponseBody注解来做到这一点。

    【讨论】:

      猜你喜欢
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 2012-10-20
      • 2018-03-17
      • 2011-08-19
      相关资源
      最近更新 更多