找到负责重定向的方法

时间:2014-07-11 08:33:37

标签: http grails

在我的grails方法中,我将视图重定向到另一个。代码如下所示:

def method_1 (){
    redirect action: "act1", params: [param1: 'Hi']

}

现在,从我的Filter类中,我想检测method_1是否有责任致电act1

FILTER

myFilter(controller:'Person', action:'act1') {
            before = {
                if (!request.getHeader("referer").contains('/Person/method_1')  ) {
                    redirect(action: 'Can't view this')
                    return false
                }
            }
        }
}

在这种情况下,request.getHeader("referer")返回NULL。那么我怎样才能找出哪个action调用act1

更新

println request.getRequestURI
                println request.getRequestURL
                println request.getContextPath
                println request.getPathInfo
                println request.getServletPath
                 request.forwardURI 

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是在flash中添加一些状态:

def firstAction (){
    flash.foo = 'firstAction'
    redirect action: "secondAction", params: [param1: 'Hi']
}

def secondAction() {
    if('firstAction' == flash.foo) {
        // do whatever you need to do
    }

    // ...
}

当您在flash中放置某些内容时,该内容将用于该请求的其余部分以及后续请求,然后才会被清除。这使得在重定向期间保留数据非常有用,因为重定向将触发第二个请求,并且您希望数据在下一个请求期间可用,但在此之后不可用。