Как определить несколько различных контроллеров в фильтре Grails 2? - PullRequest
17 голосов
/ 20 января 2012

Можно ли определить несколько различных контроллеров в фильтре веб-приложения Grails 2?Например, что-то вроде:

def filters = {
    someFilterMethod(controller: 'controller1 controller2 ...', action: '*') {
        ...
    }
}

Иначе есть ли способ указать, чтобы не включать основной index.gsp в фильтр?

Ответы [ 3 ]

25 голосов
/ 20 января 2012

Используйте символ трубы:

def filters = {
   someFilterMethod(controller: 'controller1|controller2|...', action: '*') {
      ...
   }
}
4 голосов
/ 20 января 2012

Если вы можете определить правило, которое соответствует 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) {

    }
}

Предупреждение

Я не проверял ни один из приведенных выше кодов, так что будьте бдительны!

1 голос
/ 20 января 2012

Вы можете включить логику в фильтр как

if (controllerName == "controller1" || controllerName == "controller2") {
 ...
}
...