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
Мне НУЖНО знать что-то .... Я почти не могу спать, LOL! – Topera