【发布时间】:2012-02-14 00:11:42
【问题描述】:
我希望我的 Eclipselink 2.3 Marshaller 在编组时执行验证。
我确保Schema 是由SchemaFactory 正确创建的,我将它传递给Marshaller.setSchema,并且我已经通过Marshaller.setEventHandler() 注册了一个处理程序。
marshal 结果显然是无效的 acc。到它的 Schema(在 Eclipse 中验证),但我可以看到我在 handleEvent(ValidationEvent event) 中的断点从未被命中。
我正在使用 marshal(Object, XMLStreamWriter) 编组 XML 片段,并希望编组器根据我传递的 Schema 对这些片段执行验证。
有人知道为什么这没有发生吗?
编辑:
应该发生的验证错误:元素上缺少 2 个属性。
该元素对应于 List 中包含的 Java-Object。我正在编组列表使用:
<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 个缺失且未被验证检测到。
【问题讨论】:
标签: validation jaxb schema eclipselink moxy