如何在Grails控制器中拦截后返回原始目的地

时间:2011-05-02 21:50:19

标签: grails intercept

问候! 我在控制器中有一个拦截,如:

    def beforeInterceptor = {

    if( session.sessionRoastId == null ){

        session.intendedController = params.controller
        session.intendedAction = params.action

        redirect( controller: 'roastId', action: 'enterRoastId' )
        return false
    }
}

...在重定向业务处理完毕后,继续执行原始控制器操作的正确方法是什么,并查看拦截被捕获?

现在我正在将会议中的详细信息放在后面进行访问,但是有更好的方法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以将原始目标URI作为参数传递给'enterRoastId'操作,然后重定向到那里。

def beforeInterceptor = {
    if( session.sessionRoastId == null ){
        redirect( controller: 'roastId', action: 'enterRoastId', params: [
            action: params.action, 
            controller: params.controller
        ])
        return false
    }
}

然后在你的行动后输入EnterastId:

if (params.action && params.controller) {
    redirect(controller: params.controller, action: params.action)
    return false
}

如果您不想公开动作/控制器,那么只需将值传递给'enterRoastId'视图,然后通过隐藏字段将它们传回。