我想做的是在grails过滤器中显示在数据库中创建用户时正在加载的微调器图形。需要一段时间才能检索用户凭据,我想显示一个加载微调器。然后,当用户在数据库中创建时,我想显示原始请求的页面。
这是我的问题:我有一个名为accessFilter.groovy的grails过滤器。在之前的部分中,我检查用户是否在数据库中。如果没有,我这样做:
if(!user){
render(view:'/loadingCredentials')
return true
}
然后在loadingCredentails.gsp中,我调用create用户 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>
Controller 关闭并创建用户,然后重定向回主 Controller (或用户最初导航到的任何页面)。它可以正确显示微调框,但可以代替它或创建用户并呈现请求的页面,而只是一次又一次地创建用户。
所以我的问题是...有没有办法让它起作用,还是应该更改我试图完全做到这一点的方式?
最佳答案
我不会为此使用过滤器。如果您要处理特定的操作,则过滤器可能会过大。
您的JS代码应发出AJAX请求,并开始显示微调框, Controller Action 将接受请求并创建用户(可能使用事务服务),并在完成后呈现“OK” JSON。
最后,onSuccess
JS回调将隐藏微调框,并可能执行其他操作。
从基于琐碎的基于jQuery
的解决方案到具有完善的JS MVC框架的REST驱动的单页应用程序,所有这些步骤都有大量信息。
关于grails - Grails从过滤器重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40644307/