1

我正在使用 xml 作为有效负载实现 REST 服务,并具有以下配置以使用 Jaxb2Marshaller 解组我的 xml。这是我的弹簧上下文文件中的配置

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound">
            <list>
                <value>com.my.examples.Product</value>
            </list>
        </property>
        <property name="schema" value="classpath:schemadefinitions/product.xsd" />
    </bean>

在我的 bean产品上,我只有这个注释

@XmlRootElement(name="product") 公共类 ProductInfo {

问题是当我发出 REST 请求时,它会将 xml 正确解组为 bean,但不会对使用编组器配置的模式执行任何验证。我错过了什么吗?

4

2 回答 2

1

我必须将一个validationeventhandler 作为jaxb2Mashaller.setValidationEventHandler(...) 附加到marshaller 上。一旦设置好,解组器就开始验证输入xml。

于 2012-05-04T08:09:00.123 回答
1

使用Java 8 和 JaxB 2.2.4,我看不到原始设置有任何问题!在applicationcontext.xml中定义 schema 属性是您进行模式验证所需要做的所有事情。

如果Jaxb2Marshaller“手动”创建,则需要确保afterPropertiesSet在设置架构资源后调用该方法,因为它将架构资源加载到内存中。

于 2015-06-29T11:28:44.860 回答