3

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

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

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

此链接生成一个对 URL 的 HTTP 请求:“/response/charset/produce”

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

@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[] 产生映射请求的可生产媒体类型,缩小主映射。所以它似乎只说该方法产生的媒体类型......在我的具体情况下,说控制器方法返回的媒体类型是文本值......

但是在其他地方阅读时,我发现生产属性不包括 HTTP 请求,其 Accepts 标头与指定的媒体类型不兼容...

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

4

1 回答 1

3

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

博客作者在下面的 url 中就您的问题发表了一些评论。

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

于 2013-01-10T20:30:56.430 回答