基本上,我的问题是,如果用户单击一个按钮,并等待页面响应,然后单击另一个按钮,则似乎存在竞争条件。
如何避免第一个按钮的代码使用与第二个按钮的代码相同的变量?
我怀疑这两个请求都会以某种随机顺序调用相同的 getter 和 setter,因为每个按钮单击都将处于 JSF 模型的不同阶段。
这是一个例子。假设用户点击一个按钮,动作函数改变了一些变量。该变量通过 getter 和 setter 链接到实际的 jsf 标记。现在假设动作函数完成了 50%。现在用户点击了相同的按钮。JSf 将调用链接到同一个变量的 getter 和 setter,恢复状态或其他。基本上,该变量被重置为操作更改之前的状态。现在第一次点击的动作函数继续运行,它再次改变了变量。即使没有第二个动作调用,它也是一个竞争条件。