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?