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

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

}

现在,从我的Filter类中,我想检测到method_1负责调用act1
过滤
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

最佳答案

一种解决方法是在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时,该内容将保留在该请求的其余部分以及1个后续请求中,然后再清除。这对于在重定向期间保留数据很有用,因为重定向将触发第二个请求,并且您希望数据在下一个请求期间可用,但此后不可用。

10-07 19:42
查看更多