2016-11-16 42 views
0

我想要做的是在grails筛选器显示加载微调图形,而用户正在数据库中创建。这需要一段时间来检索用户凭据,我想显示一个加载微调器。然后当用户在db中创建我想显示原始请求的页面。从筛选器Grails重定向

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

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

然后在loadingCredentails.gsp我调用创建用户控制器。

<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

我不会使用过滤器。如果你有一个特定的行动来处理,过滤器将是一个矫枉过正。

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

最后,onSuccess JS回调会隐藏微调器,也许还会做其他事情。

在所有这些步骤中有大量信息,从基于jQuery的平凡解决方案到带有全面JS MVC框架的REST动力单页应用程序