2012-05-03 14 views
1

xmlをペイロードとして使用してRESTサービスを実装し、Jaxb2Marshallerを使用してmy xmlをアンマーシャリングするために、次の設定を行います。ここに私の春のコンテキストファイルから設定私の豆製品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> 

は私が

@XmlRootElement(名= "製品") パブリッククラスProductInfo {

としてだけでこの注釈を持っています問題は、RESTリクエストでxmlをBeanに正しく非整列化するが、マーシャラで設定されたスキーマに対しては検証を実行しないということです。私は何か不足していますか?

答えて

1

jaxb2Mashaller.setValidationEventHandler(...)のように、検証エンジンと検証エンジンを接続する必要がありました。これが設定されると、unmarshallerは入力xmlの検証を開始しました。

+0

私はvalidationeventhlerも追加しました。しかし、検証していない:( – SelvaG

+0

@SelvaG "正解とフラグが立てられた"というフラグが正しくない.Jaxb2Marshallerをプログラムで作成する場合は、afterPropertiesSetを必ず呼び出してください。これはInitializingBeanです。 –

1

Java 8とJaxB 2.2.4では、元の設定に問題はありません。 のapplicationcontext.xmlにスキーマプロパティを定義すると、スキーマの検証を行うために行う必要があるのはALLです。

Jaxb2Marshallerを「手動」で作成する場合は、スキーマリソースをメモリにロードするため、スキーマリソースの設定後にafterPropertiesSetメソッドを必ず呼び出してください。

関連する問題