2

Spring MVC を使用して REST スタイルのサービスを作成する方法についてSpring 3.0 のドキュメントブログ投稿 (フォローアップ)を読んでいましたが、ContentNegotiatingViewResolver の使用方法に関する実用的な例が見つかりません。私はこのようなテストコントローラを持っています

@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>

URLの拡張子に従ってビューを解決しようとしています(html、.xml、および.jsonをサポートしたい)。.html ビューは機能します (正しい JSP ビューも表示されます) が、JSON と XML を起動して実行するために試したものは他に何もないようです (defaultViews プロパティの設定は、私が試したことの 1 つにすぎません)。読み物もあまりないようです。誰か経験や例がありますか?

4

1 に答える 1

2

text/xml問題は、XML の content-type が ではなく、 であるということだと思いますapplication/xmlMarshallingViewのコンテンツ タイプを受け入れないことがわかりますtext/xml

それぞれのビューを調べて、リクエストから解決されたコンテンツ タイプを受け入れるかどうContentNegotiatingViewResolverかを尋ねます。contentTypeサポートするコンテンツ タイプごとに、一致するプロパティを持つビューが必要です。

プロパティのコンテンツ タイプを変更するか、 のプロパティmediaTypesをオーバーライドして にすることができます。contentTypeMarshallingViewtext/xml

于 2010-01-13T13:45:42.107 に答える