【发布时间】:2009-08-10 14:38:05
【问题描述】:
Grails 提供了filters,它在您的控制器之前运行。它们在如下所示的类中定义:
class SecurityFilters {
def filters = {
myFilter(controller:'*', action:'*') { // What are those weird colons??
print "I'm filtering!"
// Code that does the filtering goes here
}
}
}
这些很好用,但我想更好地理解语法,因为它看起来不像我以前见过的任何 Groovy 代码。特别是,上面以myFilter 开头的行似乎很奇怪。这是一个名为myFilter 的方法的方法定义吗?如果是这样,每个参数后面的:'*' 是什么意思?我认为这可能是一个默认参数值,但那将是='*'。我之前在方法 calls 中看到过使用冒号的命名参数,但这不可能是方法调用,因为我没有在其他任何地方定义 myFilter()。
如果有人能告诉我如何从普通的 Groovy 类中执行过滤代码,我想我会更好地理解。换句话说,如果我有一个包含上述行的 MyFilters.groovy 文件,我该如何完成这个 Groovy 代码以打印“我正在过滤”?
import MyFilters
def mf = new MyFilters()
mf.filters.somethingGoesHere // Help! How do I finish this line so it calls my filtering code?
【问题讨论】:
-
好问题松鼠!我一直在与同样的问题作斗争 - 感谢您提出这个问题!
-
我需要知道同样的事情......我几乎无法入睡,哈哈!