繁体   English   中英

如何获得XmlAdapter的所有者JAXBContext?

[英]How do I get the owner JAXBContext for an XmlAdapter?

我需要为特定的XmlAdapter安装DefaultValidationEventHandler 根据我的阅读,您只能这样做:

JAXBContext context = JAXBContext.newInstance(MyAdapter.class);
Unmarshaller um = context.createUnmarshaller();
um.setEventHandler(new DefaultValidationEventHandler());

但是,这是不可能的,因为JAXBContext是全局的,并且是在我们的应用程序中隐式创建的(由Spring?)。 有什么办法可以让我的session获取JAXBContext吗?

您的问题的第1部分

如何获得XmlAdapter的所有者JAXBContext?

默认情况下,仅将需要转换的对象传递给XmlAdapter的实现。 如果希望XmlAdapter保持状态,则可以在Marshaller / Unmarshaller上设置其实例,然后使用该实例代替创建新实例。

XmlAdapter myAdapter = new MyAdapter(jaxbContext);
unmarshaller.setAdapter(myAdapter);

问题的第二部分

我需要为特定的XmlAdapter安装DefaultValidationEventHandler

这可能不是您想要的。 如果要对某些对象进行特殊处理,则可以创建一个扩展Unmarshaller.Listener并实现ValidationEventHander 并在Unmarshaller上相应地设置此实例。 然后,您将在进行验证时知道正在处理哪个对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM