Подтвердить что ты не робот

Как определить несколько отдельных контроллеров в фильтре Grails 2?

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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