是否可以在Grails 2 Web应用程序过滤器中定义多个不同的控制器?例如,像:
def filters = {
someFilterMethod(controller: 'controller1 controller2 ...', action: '*') {
...
}
}
否则,有没有办法指定不在过滤器中包含主index.gsp?
答案 0 :(得分:25)
使用管道符号:
def filters = {
someFilterMethod(controller: 'controller1|controller2|...', action: '*') {
...
}
}
答案 1 :(得分:4)
如果您可以定义与index.gsp匹配的规则,则可以通过添加invert: true
来定义与index.gsp匹配的所有规则。我想这样的事情应该这样做:
def filters = {
someFilterMethod(uri: '/', invert: 'true') {
}
}
以下似乎也应该有效:
def filters = {
someFilterMethod(uriExclude: '/') {
}
}
您可以提供正则表达式而不是文字路径,因此如果您还需要排除'/ index',那么您只需要将'/'替换为匹配'/'和'/ index'的正则表达式。我的正则表达式技巧很生疏,但是这样的事情应该这样做:
def filters = {
someFilterMethod(uriExclude: '/(index)?', regex: true) {
}
}
我没有测试过上面的任何代码,所以请注意这个问题!
答案 2 :(得分:1)
您可以在过滤器中包含逻辑,如
if (controllerName == "controller1" || controllerName == "controller2") {
...
}