How to define multiple distinct controllers in Grails 2 filter?

后端 未结 3 1784
闹比i
闹比i 2020-12-18 19:47

Is it possible to define multiple distinct controller in a Grails 2 web application filter? For example, something like:

def filters = {
    someFilterMethod         


        
相关标签:
3条回答
  • 2020-12-18 20:18

    If you can define a rule that matches index.gsp, then you can define a rule that matches everything but index.gsp by adding invert: true. I guess something like this should do it:

    def filters = {
        someFilterMethod(uri: '/', invert: 'true') {
    
        }
    }
    

    It seems like the following should also work:

    def filters = {
        someFilterMethod(uriExclude: '/') {
    
        }
    }
    

    You can provide a regex instead of a literal path, so if you also need to exclude '/index' as well, then you just need to replace '/' with a regex that matches '/' and '/index'. My regex skills are rusty, but something like this should do it:

    def filters = {
        someFilterMethod(uriExclude: '/(index)?', regex: true) {
    
        }
    }
    

    Warning

    I haven't tested any of the code above, so caveat emptor!

    0 讨论(0)
  • 2020-12-18 20:34

    You could include logic within the filter like

    if (controllerName == "controller1" || controllerName == "controller2") {
     ...
    }
    
    0 讨论(0)
  • 2020-12-18 20:42

    Use the pipe symbol:

    def filters = {
       someFilterMethod(controller: 'controller1|controller2|...', action: '*') {
          ...
       }
    }
    
    0 讨论(0)
提交回复
热议问题