Ответ 1
Используйте символ трубы:
def filters = {
someFilterMethod(controller: 'controller1|controller2|...', action: '*') {
...
}
}
Можно ли определить несколько разных контроллеров в фильтре веб-приложений Grails 2? Например, что-то вроде:
def filters = {
someFilterMethod(controller: 'controller1 controller2 ...', action: '*') {
...
}
}
В противном случае, есть ли способ указать, чтобы не включать основной индекс .gsp в фильтр?
Используйте символ трубы:
def filters = {
someFilterMethod(controller: 'controller1|controller2|...', action: '*') {
...
}
}
Если вы можете определить правило, соответствующее index.gsp, вы можете определить правило, которое соответствует всем, кроме index.gsp, добавив invert: true
. Я думаю, что-то вроде этого должно это сделать:
def filters = {
someFilterMethod(uri: '/', invert: 'true') {
}
}
Похоже, что следующее также должно работать:
def filters = {
someFilterMethod(uriExclude: '/') {
}
}
Вы можете предоставить регулярное выражение вместо литерального пути, поэтому, если вам также нужно исключить "/index", вам просто нужно заменить "/" на регулярное выражение, которое соответствует "/" и "/index", Мои навыки регулярных выражений ржавые, но что-то вроде этого должно это сделать:
def filters = {
someFilterMethod(uriExclude: '/(index)?', regex: true) {
}
}
Я не тестировал какой-либо код выше, поэтому caveat emptor!
Вы можете включить логику в фильтр, например
if (controllerName == "controller1" || controllerName == "controller2") {
...
}