如何配置spring mvc 3使用jaxb for xmlb编组查看ContentNegotiatingViewResolver?

时间:2011-06-10 17:52:12

标签: xml spring-mvc jaxb

我知道使用mvc:annotation-driven将免费提供给我。但是我想对它有更多的控制权。

我的配置如下:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="order" value="1" />
        <property name="mediaTypes">
            <map>
                <entry key="json" value="application/json" />
                <entry key="xml" value="text/xml"/>
            </map>
        </property>
        <property name="defaultViews">
            <list>
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
                    <property name="prefixJson" value="false" />
                    <property name="objectMapper" ref="jacksonObjectMapper" />
                </bean>
                <bean class="org.springframework.web.servlet.view.xml.MarshallingView" >
                    <property name="marshaller">
                            <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
                           <property name="contextPath" value="com.appservices.dtos"/>
                        </bean>
                    </property>
                </bean>
            </list>
        </property>
    </bean>

Spring不喜欢contextPath属性,如何告诉它扫描一些包来查找所有jaxb bean?谢谢。

3 个答案:

答案 0 :(得分:2)

您是否尝试过使用classesToBeBound属性?无论如何你的问题与spring mvc或contentnegotiatingViewResolver无关,与Jaxb2Marshaller有关

<bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            <value>org.springframework.oxm.jaxb.Flight</value>
            <value>org.springframework.oxm.jaxb.Flights</value>                
        </list>
    </property>
    <property name="schema" value="classpath:org/springframework/oxm/schema.xsd"/>
</bean>

答案 1 :(得分:2)

在Spring 3.1中,在Jaxb2Marshaller中添加了新属性“packagesToScan”,它可以执行您期望的操作。但是仍然有一个bug阻止它正常工作,但你可以期待下一个版本将有这个修复(我希望)。

答案 2 :(得分:1)

由于Jarno Walgemoed,这是一个扫描所有JAXB注释类的自定义类:

http://springinpractice.com/2011/12/29/its-back-the-classpathscanningjaxb2marshaller/

我在项目中使用它并且效果很好。