Scala JAXB 1计数IllegalAnnotationExceptions

时间:2013-07-09 15:36:32

标签: xml scala jaxb annotations

我有两个Scala案例类,它们有JAXB注释。

@XmlRootElement
@XmlSeeAlso({ Array(classOf[Element]) })
case class Config(
    @(XmlElement @field) name: String,
    @(XmlElement @field) reelCount: Int,
    @(XmlElement @field) slots: Int,
    @(XmlElementWrapper @field)@(XmlAnyElement @field) elements: List[Element]) {
    private def this() = this("", 0, 0, new ArrayList())
}

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
case class Element(
    @(XmlAttribute @field)@(XmlID @field) id: Int,
    @(XmlElement @field) name: String,
    @(XmlElement @field) imgPath: String) {
    private def this() = this(0, "", "")
}

当我从Element的第一个属性中删除@(XmlID @field)注释时,编组工作正常。当我使用xml id字段对其进行注释时,我得到以下异常:

[IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions]

它应该在Java中使用这2个注释,但不知道我在Scala中做错了什么。有任何想法吗?或者也许是一些解决方法?

1 个答案:

答案 0 :(得分:1)

JAXB (JSR-222)参考实现仅允许对@XmlID类型的字段/属性进行String注释。这就是您在IllegalAnnotationsException类型字段上获得Int的原因。