Grails JAXB元素列表为null

时间:2014-03-05 10:57:37

标签: grails jaxb

我正在使用此域类:

@XmlRootElement(name="Target")
@XmlAccessorType(XmlAccessType.NONE )
class TargetElement {

    static constraints = {
        testPurpose()
    }

    @XmlAttribute(name="TestPurpose")
    String testPurpose

    // instead of bellow in comment use this 
    @XmlElementWrapper(name = "Bag")
    @XmlElement(name="Child")
    List<Child> bag= new ArrayList<Child>()
    // 1..n Child
    static hasMany = [child:Child]
}

如果我想添加Child elem,我会使用

def target = new TargetElement(testPurpose:"TestPurpose")
target.getBag().add(child)
target.save(flush:true)
if (target.hasErrors()){
    println '3 ***********' + target.errors
}

但我得到list == null包。

为什么我的列表为空?它正在为另一个项目工作,只有名称正在改变。可能是我的眼睛遗失了什么......

1 个答案:

答案 0 :(得分:0)

对于遇到同样问题的人:将@XmlElementWrapper值(bag)设为null 在我的Bootstrap.groovy中。我必须声明:

ArrayList<Child> bag = new ArrayList<Child>()
bag.add(child1)
bag.add(child2)
targetElement.getBag().addAll(bag)

我也遇到过GROM延迟加载和JAXB的另一个问题。检查嵌套的对象是否已被检索: 例如:

static mapping = {
    nested lazy: false
}

希望这会有所帮助