将方法添加到Grails中的对象并使其可以全局使用

时间:2012-02-07 20:26:30

标签: grails groovy metaprogramming metaclass

我试图通过利用Groovy的metaclass功能向String类添加一些字符串实用程序方法。现在我在我的BootStrap.groovy脚本中的init闭包中有这样的东西:

String.metaClass.upper = {
   delegate.toUpperCase()
}

问题是这个upper方法只能在BootStrap的范围内使用...试图在Grails应用程序中的任何其他地方使用它不起作用,我得到方法丢失错误。

有没有办法让这些方法随处可用?

1 个答案:

答案 0 :(得分:0)

这是否会在测试和运行上下文中发生?在每次单元测试后,所有metaClass更改都会被回滚:http://jira.grails.org/browse/GRAILS-8596