1

ペイロードとしてxmlを使用してRESTサービスを実装しており、Jaxb2Marshallerを使用してxmlをアンマーシャリングするための次の構成があります。これが私のSpringコンテキストファイルからの構成です

<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")public class ProductInfo {

問題は、RESTリクエストを行うと、xmlをアンマーシャルしてBeanを適切にアンマーシャルしますが、マーシャラーで構成されたスキーマに対して検証を実行しないことです。私は何かが足りないのですか?

4

2 に答える 2

1

マーシャラーにjaxb2Mashaller.setValidationEventHandler(...)としてvalidationeventhandlerをアタッチする必要がありました。これが設定されると、アンマーシャラーは入力xmlの検証を開始しました。

于 2012-05-04T08:09:00.123 に答える
1

Java8とJaxB2.2.4では、元の設定に問題はありません。applicationcontext.xmlスキーマプロパティを定義するだけで、スキーマ検証を実行できます。

「手動」で作成する場合は、スキーマリソースをメモリにロードするため、スキーマリソースを設定した後にJaxb2Marshaller必ずメソッドを呼び出す必要があります。afterPropertiesSet

于 2015-06-29T11:28:44.860 に答える