Eclipselink2.3マーシャラーにマーシャリング時に検証を実行してもらいたい。Schema
によって正しく作成されていることを確認しました。SchemaFactory
これをに渡し、をMarshaller.setSchema
介してハンドラーを登録しましたMarshaller.setEventHandler()
。
マーシャルの結果は明らかに有効ではありません。handleEvent(ValidationEvent event)
そのスキーマ(Eclipseで確認済み)に対して、それにもかかわらず、のブレークポイントがヒットされないことがわかります。
私はXMLフラグメントを使用してマーシャリングしてmarshal(Object, XMLStreamWriter)
おり、マーシャラーが渡したスキーマに従ってこれらのフラグメントの検証を実行することを期待しています。
なぜこれが起こらないのか誰かが考えていますか?
編集:
発生するはずの検証エラー:要素に2つの属性がありません。
この要素は、List<>に含まれているJavaオブジェクトに対応しています。私は以下を使用してリストをマーシャリングしています:
<xml-element java-attribute="listInstance" xml-path="ListWrapperElement/ListElement" type="foo.ElementType" container-type="java.util.ArrayList"/>
要素自体のマッピング:
<java-type name="foo.ElementType" xml-accessor-type="PROPERTY">
<java-attributes>
// just <xml-attribute> elements here
</java-attributes>
</java-type>
したがって、すべての属性はListWrapperElement / ListElement /@attributeにマーシャリングされます。これらのうち2つが欠落しており、検証によって検出されません。