Xml 有没有关于如何使用Spring3.0内容协商实现RESTful服务的示例?
我正在阅读关于如何使用SpringMVC创建REST风格服务的和,但是我找不到任何关于如何使用ContentNegotingViewResolver的工作示例。我有一个这样的测试控制器Xml 有没有关于如何使用Spring3.0内容协商实现RESTful服务的示例?,xml,json,spring,rest,content-negotiation,Xml,Json,Spring,Rest,Content Negotiation,我正在阅读关于如何使用SpringMVC创建REST风格服务的和,但是我找不到任何关于如何使用ContentNegotingViewResolver的工作示例。我有一个这样的测试控制器 @Controller public class IndexController implements Serializable { @RequestMapping("/index") public ModelAndView index() { ModelAndView m
@Controller
public class IndexController implements Serializable
{
@RequestMapping("/index")
public ModelAndView index()
{
ModelAndView mav = new ModelAndView();
mav.setViewName("index");
return mav;
}
}
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="xml" value="text/xml" />
<!--
<entry key="json" value="application/json"/>
-->
</map>
</property>
<property name="defaultContentType"><value>text/html</value></property>
<property name="defaultViews">
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
</property>
</bean>
</property>
<property name="viewResolvers">
<list>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/pages/" />
<property name="suffix" value=".jsp" />
</bean>
</list>
</property>
</bean>
试着用这样的东西
@Controller
public class IndexController implements Serializable
{
@RequestMapping("/index")
public ModelAndView index()
{
ModelAndView mav = new ModelAndView();
mav.setViewName("index");
return mav;
}
}
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="xml" value="text/xml" />
<!--
<entry key="json" value="application/json"/>
-->
</map>
</property>
<property name="defaultContentType"><value>text/html</value></property>
<property name="defaultViews">
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
</property>
</bean>
</property>
<property name="viewResolvers">
<list>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/pages/" />
<property name="suffix" value=".jsp" />
</bean>
</list>
</property>
</bean>
文本/html
尝试根据URL中的扩展解析视图(我希望支持html、.xml和.json)。html视图可以工作(也可以显示正确的JSP视图),但是我尝试设置并运行JSON和XML的其他方法似乎都不起作用(设置defaultViews属性只是我尝试的一件事情)。似乎也没有那么多的阅读材料。有人有经验或例子吗?我相信你的问题在于XML的内容类型不是
text/XML
,而是application/XML
。您会发现,MarshallingView
将不接受text/xml
的内容类型
ContentNegotiatingViewResolver
所做的是咨询它的每个视图,询问它们是否接受从请求解析的内容类型。对于要支持的每个内容类型,都需要一个具有匹配的contentType
属性的视图
您可以更改
mediaTypes
属性中的内容类型,也可以将MarshallingView
的contentType
属性重写为text/xml谢谢,内容类型确实是错误的,但是现在我收到一个异常,说“无法在模型{}中找到要封送的对象”。XML封送器配置是否正确(我也想将XStream配置为生成JSON)。@Daff因为您的模型为EmptyInDect,您需要设置您的模型,以便封送器视图
知道如何处理此问题。然而,这是一个完全不同的问题,所以请接受这一个,并继续下一个。明白了。。。我想我可以使用它并设置其他视图,现在我知道它是如何工作的了。