在控制器之外使用bindData方法

时间:2009-12-21 23:23:48

标签: grails

我想知道是否有人有想法提供最佳方式 我的grails控制器之外的bindData()的功能。在我目前 我创建了几个groovy类来模拟返回的对象 api。在这些类中,我有一个静态方法,它解析xml并返回 该类的对象列表。我想跳过所有类型的铸造 通过在这些类中使用bindData方法来废话。有任何建议 如何做到这一点将不胜感激。

1 个答案:

答案 0 :(得分:8)

我一直在寻找类似的解决方案,在服务类中使用bindData。我在JT's blog找到了一个解决方案。解决方案基本上是导入:

import org.codehaus.groovy.grails.web.metaclass.BindDynamicMethod

然后将其添加到您的代码中:

def foo = new Foo()
BindDynamicMethod bind = new BindDynamicMethod()
def args =  [ foo, params, [exclude:['name', 'mail']] ] // for example
bind.invoke( foo, 'bind', (Object[])args)

(Object [])强制转换对于Groovy / Java兼容性是必要的。 (Groovy将'args'对象视为ArrayList,而不是对象数组。)