2014-11-03 79 views
-1

WhenI尝试访问params在圣杯过滤器,在一个叫于前{}封闭效用方法获得:获得Grails中筛选获得PARAMS

groovy.lang.MissingPropertyException: No such property: params for class: myproject.MyFilters 

如何访问params相当于对象在过滤器?

感谢

+1

您将需要提供更多有关您的过滤器的信息。在过滤器的哪个部分你试图得到'params'?之前,之后,后视图?这是一个解析的请求?未解析的请求?你可以在你的问题中提供的更详细的信息,你会得到更好的答案。 – 2014-11-03 19:05:32

+0

我不确定为什么这个问题得到了“不清楚你问什么”的近距离投票。目前还不清楚你尝试过什么,但你所问的问题似乎很清楚。 – 2014-11-03 20:22:31

+0

请粘贴您的代码 – 2016-07-16 06:32:05

回答

4

你可以做这样的事情......

// grails-app/conf/paramsinfilter/DemoFilters.groovy 
package paramsinfilter 

class DemoFilters { 

    def filters = { 
     all(controller:'*', action:'*') { 
      before = { 
       // params is available here 
       println "Params in before filter: $params" 
      } 
      after = { Map model -> 
       // params is available here 
       println "Params in after filter: $params" 
      } 
      afterView = { Exception e -> 
       // params is available here 
       println "params in afterView filter: $params" 
      } 
     } 
    } 
} 

编辑

我现在这个问题已被编辑看到。如果你想在你从过滤器中调用的实用方法中引用参数,你有很多选项取决于你真正想要做什么,但最有可能的是你想要做的就是将params作为参数到效用方法。

// grails-app/conf/paramsinfilter/DemoFilters.groovy 
package paramsinfilter 

class DemoFilters { 

    def filters = { 
     all(controller:'*', action:'*') { 
      before = { 
       // params is available here 
       helper(params) 
      } 
      after = { Map model -> 
       // params is available here 
       helper(params) 
      } 
      afterView = { Exception e -> 
       // params is available here 
       helper(params) 
      } 
     } 
    } 

    private helper(params) { 
     println "Params in helper: $params" 
    } 

}