Grails提供在控制器之前運行的filters。他們在像這樣的類定義:Grails過濾器語法或者如何在Grails外調用Grails過濾器
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
的方法的方法定義嗎?如果是這樣,每個參數後:'*'
是什麼意思?我認爲這可能是一個默認的參數值,但那將是='*'
。我已經在方法調用之前看到使用冒號命名的參數,但是這不可能是方法調用,因爲我沒有在其他地方定義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?
好問題松鼠!我剛剛一直在與同樣的問題作鬥爭 - 感謝您提出這個問題! – alpian 2010-09-24 16:50:49
我需要知道相同的東西....我幾乎睡不着,哈哈! – Topera 2011-05-30 10:40:25