- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有了这个 Jaxb Xml 定义,我尝试通过添加 @XmlPath(".")
来删除 Map Elements Wrapper但在解码期间会导致异常
@XmlRootElement
public abstract class ViewElement{
@XmlJavaTypeAdapter(value=EventAdapter.class)
public Map<Event, String> getEvents() {
}
private transient Class entityType;
public Class getEntityType() {
return entityType;
}
}
EventAdapter 是
public class EventAdapter extends XmlAdapter<EventAdapter.AdaptedMap, Map<Event, String>> {
public static class AdaptedMap {
@XmlVariableNode("key")
List<AdaptedEntry> entries = new ArrayList<AdaptedEntry>();
}
public static class AdaptedEntry {
@XmlTransient
public String key;
@XmlValue
public String value;
}
.....
}
我的输出是
<element>
<events>
<onCellEdit>do some thing<onCellEdit>
</events>
<entityType>com.agitech.erp.model.erp.ErpFolder</entityType>
<element>
我尝试删除 <events>
通过添加 @XmlPath(".")
标记
@XmlPath(".")
@XmlJavaTypeAdapter(value=EventAdapter.class)
public Map<Event, String> getEvents() {
}
效果不错
<element>
<onCellEdit>do some thing<onCellEdit>
<entityType>com.agitech.erp.model.erp.ErpFolder</entityType>
<element>
但是解码失败了
Caused by: Exception [EclipseLink-3002] (Eclipse Persistence Services - 2.6.0.v20140809-296a69f): org.eclipse.persistence.exceptions.ConversionException
Exception Description: The object [], of class [class java.lang.String], from mapping [org.eclipse.persistence.oxm.mappings.XMLDirectMapping[entityType-->view.entityType/text()]] with descriptor [XMLDescriptor(com.agitech.erp.view.BeanView --> [DatabaseTable(view), DatabaseTable(viewFrame), DatabaseTable(viewElement)])], could not be converted to [class java.lang.Class].
Internal Exception: java.lang.ClassNotFoundException:
at org.eclipse.persistence.exceptions.ConversionException.couldNotBeConvertedToClass(ConversionException.java:95)
at org.eclipse.persistence.internal.helper.ConversionManager.convertObjectToClass(ConversionManager.java:446)
调试 Jaxb 让我上线
org.eclipse.persistence.internal.oxm.XMLDirectMappingNodeValue
public void endElement(XPathFragment xPathFragment, UnmarshalRecord unmarshalRecord) {
...
line 205 unmarshalRecord.setAttributeValue(convertedValue, xmlDirectMapping);
}
在解码 entityType 值期间,UnmarshalRecordImpl.currentObj
包含 EventAdapter 而不是父元素
我修改org.eclipse.persistence.internal.oxm.record.UnmarshalRecordImpl
public XPathNode getNonAttributeXPathNode(String namespaceURI, String localName, String qName, Attributes attributes) {
....
if(null == resultNode && null == nonPredicateNode) {
// ANY MAPPING
resultNode = xPathNode.getAnyNode();
// by default it return the EventAdapter, changing it to NULL fix my problem
}
....
}
不是安全的解决方案
最佳答案
我已经能够重现您遇到的问题,但尚未找出原因。您可以使用以下错误来跟踪此问题的进展:
关于jaxb - @XmlPath (".") 与@XmlAdapter 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765087/
我有一个基于 XML 的数据库,并且定义了一个用户模型,其中包含对角色(另一个模型)的引用列表。我已将 XMLAdapter 附加到 Roles 属性以自动填充角色。为此,我已在此适配器中 @auto
我正在使用 JAXB(以及一些用于 XSLT 的 Saxon)解码 XML 数据。在我的 XML 文档中,我有一个日期字符串值。 我做了一些研究并尝试了 XMLAdapter 和 @XMLJavaTy
我将 CXF 2.4 与 JAXB 结合使用。 我可以为我的 owm 类(例如 LWDate)的所有实例设置一个全局 XmlAdapter 吗? 我写了一个类: public class LWDate
有没有办法在 XmlAdapter 中检索当前的基本 URI?或者这通常是如何实现的? public class Service{ ... @GET public MyEntity g
我正在尝试让 XmlAdapter 到 HashMap 工作,但我一直收到异常。我关注了this blog entry非常接近,我已经多次检查我的代码,但我没有看到问题。 我正在使用最新版本的 org
我需要生成一个 XML使用以下格式的文件 JAXB2 , 它同时具有固定 和可变 xml 内容。 约束是什么? 变量的内容XML零件应该是 5 个不同的 XML schema 之一(计划让 JAXB2
此类的实例是大型对象图的一部分,不在对象图的根部: public class Day { public Day(LocalDate date, List times) {
我正在制作一个应用程序,它将包含 XML 文件中的数据。 我现在遇到一个问题:JAXB 不编码我的子类,因此当我编码 XML 文件时,所有对象都是父类的对象。我尝试了 @XMLSeeAlso、Acce
我想转换我的 payaload 中的项目列表,并将它们转换为 HashMap 。基本上,我拥有的是一个 Item xml 表示,其中包含一个 ItemID 列表。每个 ItemID 中都有一个 idT
当我试图直接解码一个根对象时,我遇到了 jaxb 的 XMLAdapters 的限制,而不是它是另一个对象中的一个字段,因此绕过了@XmlJavaTypeAdapter 我宁愿不包装我的对象,因为这会
我有一个外部(即不可修改的)com.external.Money 类,它有一个带有 getter 和 setter 的 java.util.Currency 字段。在我的 CXF jaxws 网络服务
我正在使用 JAXB XMLadapter 来编码和解码 boolean 值。应用程序的 XML 文件也将由 C# 应用程序访问。我们必须验证此 XML 文件,这是使用 XSD 完成的。 C# 应用程
我必须生成一个 xml 元素,该元素的值可以是任何“原始类型”(xsd:string、xsd:boolean 等)。示例: String Value 2011-10-21 2011-10-21T12:
有了这个 Jaxb Xml 定义,我尝试通过添加 @XmlPath(".") 来删除 Map Elements Wrapper但在解码期间会导致异常 @XmlRootElement public ab
我想使用 EclipseLink MOXy 将对象树持久保存为 XML。但我希望使用自定义的 DoubleAdapter 来编写所有 double 类型的字段。我知道我可以使用基于包的注释来做到这一点
我正在尝试创建一个 @XmlAdapter 以将混合列表中的单词拆分为名为 Word 的 Wrapper 类的对象。该字段还可能包含名为 Group 的 Word 扩展的实例。 这个想法是这样的: S
我需要为特定的 XmlAdapter 安装 DefaultValidationEventHandler。从我读过的内容来看,你只能这样做: JAXBContext context = JAXBCont
我正在使用 jaxbMarshaller 为第三方库类生成 xml。由于将 Calendar 对象转换为字符串的库 XmlAdapter 不使用 TimeZone 字段,因此编码器为 pojo 类的每
如何将 EJB 注入(inject)到 XmlAdapter 中? 我的想法是,我想通过 REST API 获取 ID 列表,并将该 ID 数组转换为实体对象的对象列表。例如: public clas
我正在使用以下源代码执行一个 Maven 项目 package com.coderplus.jaxb; import java.util.HashMap; import javax.xml.bind.
我是一名优秀的程序员,十分优秀!