2012-05-09 41 views

回答

4

您提到泽西岛,所以我假设您指的是REST实施。如果您的资源安装正确,Jersey会自动将您的内容序列化为XML和JSON。你只需要表明更广泛的媒体类型为您@Produces注释:

@GET 
@Path("/somepath") 
@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML}) 
public MyBean getData() ; 

MyBean是适当JAXB注释的POJO。有了这个资源端点定义主叫方可以指定他们通过Accept:头想要的内容类型:

GET http://www.example.com/somepath 
Accept: text/xml 
+0

如果get请求没有指定,它会默认第一个像json的东西吗? – loyalflow

+0

@ user1361315我的经验是它会选择第一种类型,但我从来没有找到任何文档来确认行为。如果你有两个方法,每个方法都有不同的Produces,它将选择Java 7之前的第一个方法,以及Java 7中的随机方法。 –

+0

@perception我认为它是json和html也是一个有效的组合,然后像json和XML 。正确? –

0

Spring提供了ContentNegotiatingViewResolver,其目的是提供此功能。从文档的例子:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
    <property name="mediaTypes"> 
    <map> 
     <entry key="atom" value="application/atom+xml"/> 
     <entry key="html" value="text/html"/> 
     <entry key="json" value="application/json"/> 
    </map> 
    </property> 
    <property name="viewResolvers"> 
    <list> 
     <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> 
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/"/> 
     <property name="suffix" value=".jsp"/> 
     </bean> 
    </list> 
    </property> 
    <property name="defaultViews"> 
    <list> 
     <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> 
    </list> 
    </property> 
</bean> 

描述HTML和JSON之间的切换,但这种可以容易地扩充以支持XML为好,使用JAXB或一些其他XML串行化器。进一步阅读:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-multiple-representations

我会发布使用XML和新泽西州的例子,但我不熟悉的豆球衣。

相关问题