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