2

我正在尝试Jaxb2Marshaller如下配置:

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            <value>com.test.response1.ResponseType1</value>
            <value>com.test.response2.ResponseType2</value>
            <value>com.test.request.Request</value>
        </list>
    </property>
</bean>

它有效。

classesToBound混淆是物质中提到的类的顺序吗?

如果我将其更改为:

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
                        <value>com.test.request.Request</value>
            <value>com.test.response1.ResponseType1</value>
            <value>com.test.response2.ResponseType2</value>
        </list>
    </property>
</bean>

一切都完全相同,我得到以下异常:

org.springframework.beans.TypeMismatchException: Failed to convert value of type 'com.test.response2.ResponseType2' to required type 'com.test.request.Request'

正在使用的版本spring是:3.1.2.RELEASE

有人可以帮忙吗?

4

1 回答 1

0

除非在 Spring 3.1.0 和 3.1.2 之间发生了变化,否则如果您正在处理 JAXB 生成的类,则顺序无关紧要。如果您是手动创建/注释对象,那可能是另一回事——也许如果您发布它们,我们可以提供帮助。另一方面,我强烈建议使用另一种机制来指向Jaxb2Marshaller要编组的类,使用contextPathsorpackagesToScan属性。请记住contextPath/contextPaths需要ObjectFactory由 JAXB 编译器生成的类。

于 2012-11-28T21:43:41.363 回答