Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 有没有关于如何使用Spring3.0内容协商实现RESTful服务的示例?_Xml_Json_Spring_Rest_Content Negotiation - Fatal编程技术网

Xml 有没有关于如何使用Spring3.0内容协商实现RESTful服务的示例?

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

我正在阅读关于如何使用SpringMVC创建REST风格服务的和,但是我找不到任何关于如何使用ContentNegotingViewResolver的工作示例。我有一个这样的测试控制器

@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,您需要设置您的模型,以便
封送器视图
知道如何处理此问题。然而,这是一个完全不同的问题,所以请接受这一个,并继续下一个。明白了。。。我想我可以使用它并设置其他视图,现在我知道它是如何工作的了。