微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Grails:使用XML数据绑定保存嵌套对象

我在Grails中创建一个REST服务来接受来自 python脚本的数据. python脚本生成对象图的 XML表示,并将其提交给控制器.事情对我的平面对象很有用,但我无法弄清楚如何处理域对象包含一组子对象的情况.出于无关的原因,我的DOA层是纯 Java JPA.

例如,我的域类(离开getter / setters / etc):

class Schedule {
  String name;
  @OnetoMany;
  HashSet<Step> steps;
}

class Step {
    String name;
    @ManyToOne;
    Schedule schedule;
}

我的python脚本生成如下XML:

<schedule>
  <name>Foo</name>
  <steps>
     <step>
       <name>Bar</name>
     </step>
     <step>
        <name>blatz</name>
     </step>
  </steps>
</schedule>

在我的控制器中我有这个:

def save = {
   def schedInstance = new Schedule(params['schedule'])
   ...
}

steps属性永远不会被填充.如果我将params转储到日志中,则步骤数据全部被卡在一起(在上面的示例中,它将产生步骤:“Barblatz”

我必须做一些非常错误的事情.我想这是一项常见的任务.我能找到的关于嵌套对象的一切都与命令对象有关.如果可以避免,我不想在命令对象中复制我的域对象代码.

解决方法

def save = {
    def schedInstance = new Schedule(params['schedule'])
    params['schedule?.step'].each{stepXml->
        schedInstance.addTo(new step(stepXml)
    }
}

未经测试,但我之前做过类似的事情.一旦我有机会测试它,我会根据需要编辑它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。