0

我正在构建一个简单的 REST 服务,它应该返回编码为 JSON 或JSONP的数据(取决于客户端请求的内容)。我已按照vivin.net 上的教程进行操作

WEB-INF/config/config.xml

<beans ...>
  ...
  <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="favorPathExtension" value="true"/>
    <property name="mediaTypes">
      <map>
        <entry key="json" value="application/json" />
        <entry key="jsonp" value="application/javascript" />
      </map>
    </property>
    <property name="defaultViews">
      <list>
        <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
        <bean class="cz.dusanrychnovsky.utils.json.MappingJacksonJsonpView" />
      </list>
    </property>
  </bean>
</beans>

映射JacksonJsonpView.java

public class MappingJacksonJsonpView extends MappingJacksonJsonView
{
    public static final String DEFAULT_CONTENT_TYPE = "application/javascript";

    @Override
    public String getContentType() {
        return DEFAULT_CONTENT_TYPE;
    }

    @Override
    public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) 
        throws Exception 
    {
        ...
    }
}

但是,当我尝试请求http://localhost:8080/service/resource.jsonp时,Spring 仍将使用 MappingJacksonJsonView(如日志所示)并返回编码为 JSON(而不是 JSONP)的输出。

我究竟做错了什么?

如果我遗漏了一些重要的细节,请索取。我会立即更新帖子。

4

1 回答 1

1

我认为您最好按照 spring.io 提供的教程进行操作:

http://spring.io/guides/gs/rest-service/

如果您使用的是最新版本的 Spring,它会自动执行 Jackson 编组。所以你不应该有上面的任何代码。

于 2013-11-11T16:02:24.903 回答