Grails从过滤器重定向

时间:2016-11-16 23:41:38

标签: grails

我尝试做的是在Grails过滤器中显示加载微调器图形,同时在数据库中创建用户。检索用户凭据需要一段时间,我想显示加载微调器。然后当用户在db中创建我想显示原始请求的页面时。

这是我的问题:我有一个名为accessFilter.groovy的grails过滤器。在前面部分中,我检查用户是否在db中。如果不是,我这样做:

    if(!user){
        render(view:'/loadingCredentials')
        return true
    }

然后在loadingCredentails.gsp中,我调用了create user controller。

    <body onload="callCreateUser()">
        <g:javascript>
            function callCreateUser(){
                window.location = "admin/createuser"
            }
        </g:javascript>
        <div>
            <img alt="Loading..." src="images/puff.svg"></img>
        </div>
    </body>

控制器关闭并创建用户,然后重定向回家庭控制器(或用户最初导航到的任何页面)。它正确地显示了微调器,但它改为创建用户并呈现所请求的页面,它只是一次又一次地创建用户。

所以我的问题是......有没有办法让这个工作或者我应该改变我试图完全做到这一点的方式?

1 个答案:

答案 0 :(得分:1)

我不会使用过滤器。如果您要处理特定操作,过滤器将是一种过度杀伤。

您的JS代码应发出AJAX请求并开始显示微调器,控制器操作将接受请求并创建用户(可能使用事务服务)并在完成后呈现“OK”JSON。

最后,onSuccess JS回调会隐藏微调器并可能做其他事情。

所有这些步骤都有大量的信息,从基于jQuery的简单解决方案到基于REST的单页应用程序,以及完整的JS MVC框架