Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在web应用程序中处理多个用户更新同一表单_Java_Javascript_Html - Fatal编程技术网

Java 在web应用程序中处理多个用户更新同一表单

Java 在web应用程序中处理多个用户更新同一表单,java,javascript,html,Java,Javascript,Html,假设用户A打开了一个包含填充数据的表单 当用户A修改表单数据时,用户B打开同一表单,并为用户A填充数据 然后,当用户B对数据进行修改时,用户A已单击提交更新记录的表单 因此,现在当用户B完成表单更新并单击submit按钮时,将显示一条警告消息,表明在他修改数据时,该记录已被修改,以便他可以再次重新加载表单 我想这是最好的解决方案(警告消息)在用户的角度为这种情况下,对吗?那么如何在后端实现这一点呢?如果您使用的是JPA/Hibernate,您可以查看脏检查标志是否为true我建议您在数据库中维护

假设用户A打开了一个包含填充数据的表单

当用户A修改表单数据时,用户B打开同一表单,并为用户A填充数据

然后,当用户B对数据进行修改时,用户A已单击提交更新记录的表单

因此,现在当用户B完成表单更新并单击submit按钮时,将显示一条警告消息,表明在他修改数据时,该记录已被修改,以便他可以再次重新加载表单


我想这是最好的解决方案(警告消息)在用户的角度为这种情况下,对吗?那么如何在后端实现这一点呢?

如果您使用的是JPA/Hibernate,您可以查看脏检查标志是否为true

我建议您在
数据库中维护文档(表单数据)的
版本
。因此,在从数据库中获取信息时,您可以读取版本值,在提交时,只需验证并增加它

因此,在您的情况下,以下情况将发生

1.用户A读取表单数据(版本1)

2.用户B从数据读取(版本1)

3.用户A提交数据(现在将版本与以DB为单位的值匹配,它仍然是1,所以只需增加1,现在它的值是以DB为单位的2)

4.现在当用户B提交表单时,在匹配值时,将发现不匹配(1(步骤2)!=2(当前值以DB为单位))

5.从这一点开始,您可以向前端发出一些错误消息/警告

这是一种乐观的锁定


请参阅:-

这可能是您的最佳解决方案,但肯定不是唯一的解决方案

当用户输入数据时,可以实时更新表单中的数据(无需单击提交)。这样,看到同一文档的其他用户可以看到其他人在做什么,有点像谷歌文档

有了WebSocket,实现起来就不那么难了这是一个主要用于客户端脚本编写的教程,还有一些指向一些后端模块的链接。如果这些都不能满足您的后端需求,我敢肯定,如果您在谷歌上搜索,一定会有一个模块和一些您喜欢的语言示例代码