我正在构建一个简单的REST服务,它应该返回编码为JSON或JSONP的数据(取决于客户端请求的内容)。我跟着the tutorial on 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>
MappingJacksonJsonpView.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)的输出。
我做错了什么?
如果我遗漏了一些重要细节,请向他们索取。我马上就会更新帖子。
答案 0 :(得分:1)
我认为你可能会更好地遵循spring.io提供的教程:
http://spring.io/guides/gs/rest-service/
如果您使用的是最新版本的Spring,它会自动执行Jackson编组。所以你不应该有上面的任何代码。