3

您好,在我们的应用程序的一部分中,我需要将数据从过滤器传递到控制器。我已经读过这可以通过在控制器上使用请求对象和前拦截器来完成。

一些示例代码:

class SomeService {
    def doSomething(request, params) {
        request.foo = "helloworld"
    }
}

class SomeFilter {

    def someService

    def filters = {
        all(controller:'*', action:'*') {
            before = {
                // service does something and places object in request
                // using request.foo = "helloworld"
                someService.doSomething(request, params)
            }
        }
    }
}

class SomeController {

    def foo

    def beforeInterceptor = {
        foo = request.foo
    }

    def index = { 
        println foo
    }
}

这是一种有效的做事方式还是有其他方式?

4

1 回答 1

3

您正在使用的方法(将数据分配给请求属性)是一种高效且广泛使用的方式,可在层之间传递请求特定数据。

grails 所基于的 Spring 框架广泛使用了这一点。你可以在这里看到它使用的一些属性键:http: //static.springsource.org/spring/docs/3.0.x/api/org/springframework/web/util/WebUtils.html

于 2013-01-24T21:20:27.883 回答