有关在Spring MVC中@RequestMapping内的produce属性的一些信息

时间:2013-01-10 20:21:22

标签: java spring spring-mvc annotations

在Spring MVC Showcase示例中(可从STS仪表板下载)我有以下情况。

在我看来,我有以下链接:

        <li>
            <a id="responseCharsetProduce" class="textLink" href="<c:url value="/response/charset/produce" />">@ResponseBody (UTF-8 charset produced)</a>
        </li>

此链接会向网址生成HTTP请求:“/ response / charset / produce”

好的,这个HTTP请求由控制器类的以下方法处理(我的控制器类本身用@RequestMapping注释(value =“/ response”,method = RequestMethod.GET,所以这个方法处理了这个请求):< / p>

@RequestMapping(value="/charset/produce", produces="text/plain;charset=UTF-8")
public @ResponseBody String responseProducesConditionCharset() {
    return "\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01 (\"Hello world!\" in Japanese)";
}

我的疑问与@RequestMapping注释中的生成元素有关...

在这里阅读:http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html

说: String []生成映射请求的可生成媒体类型,缩小主映射。所以似乎只生成说明方法生成的媒体类型...我的具体情况说控制器方法返回的媒体类型是文本值...

但在其他地方阅读时,我发现produce属性排除了HTTP请求,其中Accepts标头与指定的媒体类型不兼容......

那么......究竟在@RequestMapping中产生什么属性?

1 个答案:

答案 0 :(得分:3)

“生成”条件表示该方法将返回的内容。如果客户端没有指定Accept标头,那么没有什么可以阻止该方法返回它可能的内容。

博客作者对您的问题有一些评论,请参阅以下网址。

http://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements