【发布时间】:2021-12-20 13:41:16
【问题描述】:
我有一个视图,它有一个使用g:link GSP 标记的链接,该链接具有在大量行上运行和更新的操作,因此需要一些时间。与此同时,浏览器处于不稳定状态,并在 30 秒后超时(这是 servlet 容器的超时)。
问题:
- 页面超时是一种糟糕的用户体验。
- 浏览器每次超时都会提交控制器动作。我已通过检查查询是否已在运行来处理此问题,因此这不再是问题。
问题:
如何触发控制器操作并将页面重新加载到同一视图?还是有更好的方法来处理这个问题,比如触发异步操作?
我尝试使用js重新加载页面,但似乎没有重新加载页面。我已经阅读了有关实现消息队列的信息,但是对于一个简单的问题似乎需要做很多工作。任何想法都会很好。提前谢谢你。
查看:
<li>
<a class=""
href="${g.createLink(controller: "hello", action: "dbAction")}">Run Update on DB
</a>
</li>
控制器动作:
def dbAction() {
some code...
myservice.dbAction();
redirect(action: 'index')progress"
}
}
我的服务 dbAction:
def dbAction() {
Sql sql = getSql()
sql.executeUpdate('''
update mytable
set
mydata = calculate_data,
updated_by = 'dbAction',
updated_at = now()
where
id in (1,2,3)
}
【问题讨论】:
标签: grails groovy grails-controller