正在获取对Grails Filter中params的访问权限



当我尝试在Grail过滤器中访问params时,在before{}闭包中调用的实用程序方法中:

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

如何访问筛选器中等效的params对象?

感谢

您可以这样做。。。

// 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,根据你真正想做的事情,你有很多选项,但最有可能的是将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"
    }
}

最新更新