我正在构建一个简单的 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)的输出。
我究竟做错了什么?
如果我遗漏了一些重要的细节,请索取。我会立即更新帖子。