Синтаксис фильтра 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
? Если так, то что:'*'
значит после каждого параметра? Я думал, что это может быть значением параметра по умолчанию, но это будет='*'
, Я видел именованные параметры, используя двоеточия в методеcalls раньше, но это не может быть вызовом метода, потому что я не определилmyFilter()
где-нибудь еще.
Думаю, я бы лучше понял, если бы кто-то мог просто сказать мне, как выполнить код фильтрации из обычного класса Groovy. Другими словами, если у меня есть файл MyFilters.groovy, который содержит строки выше, как я могу завершить этот код Groovy, чтобы он печатал «I filtering»?
import MyFilters
def mf = new MyFilters()
mf.filters.somethingGoesHere // Help! How do I finish this line so it calls my filtering code?