在我们关注的XPage应用程序中,用户长期以来一直在抱怨使用它时随机时间的“数据丢失”。这意味着,当他们提交文档时,他们有时会刷新页面,他们刚刚编辑的所有字段都是空白的,或者是在原始页面加载时的状态,因此他们遇到了数据丢失。花了很多时间来计算正在发生的事情,现在他们执行的每个动作都记录在文档中,以便我可以查看它。我们发现了正在发生的事情,我需要找到解决方法:
如果他们打开只读版本并且不在选项卡式面板中导航,他们可以继续使用可编辑版本。似乎文档的提交,即使它处于读取模式,也会破坏可编辑版本与服务器的链接。这是为什么以及如何预防?
我想阻止他们在另一个窗口打开它(不知道如何)作为绝对的最后手段 - 它已经成为许多国家许多用户的工作方式。有任何想法吗??
根据要求提供更多信息: 好的,所以文件是问题报告。第一个选项卡上有关调用者,受影响模型等的基本详细信息。有一个附件选项卡,还有一个解决方案选项卡。
在确定用户正在做什么时,他基本上说因为他不记得来电者的姓名而想要解决呼叫者的问题,他在另一个窗口打开了文件。看来有点懒,但无论如何。
有一个名叫John Mackay的人发表了一篇帖子,我想前段时间有关跟踪用我使用的sessionScope变量选择的标签的原因有几个原因。因此,选项卡的onclick事件将sessionScope.tabSelected var设置为所选的任何内容。当我对文档进行完全更新时,这会有所帮助,因为人员最后一次打开的选项卡是刷新后默认选择的选项卡。因此,当用户在另一个窗口中打开文档时,sessionscope var也会导致相同的选项卡在那里打开。
如果用户在“解决方案”选项卡上,并且他们在另一个窗口中打开文档,则还会选择解决方案选项卡。然后,他们必须选择“信息”选项卡以查找呼叫者的姓名,这就是导致问题的原因。也许范围较小的var可能会修复它?我已尝试使用onclick“不更新或验证”和“部分执行”设置,但尚未修复它。当我明天回到办公室时,我会尝试在没有在标签点击上设置范围变量的情况下尝试它以查看是否可以修复任何内容并将报告回来
答案 0 :(得分:1)
解决!我有一个标签面板,在定义中,我有:
selectedTab="#{javascript:sessionScope.TabSelected}"
在每个选项卡上,我有一个设置sessionScope.TabSelected
的事件处理程序。我尝试了部分执行模式,我尝试了不验证或更新数据,但没有任何效果。
然后我完全删除了每个选项卡上的事件处理程序以及selectedTab属性。现在,您可以在1个窗口中打开文档,然后在另一个窗口中读取,单击读取版本中的选项卡,它不会影响可编辑窗口中的文档。提交可编辑的版本,它不会被服务器拒绝,这正是我想要的。
唯一的缺点是,如果您现在对文档执行完整更新并重新加载页面,它将返回到选项卡式面板中的第一个选项卡而不是您所在的位置。我希望用户能接受这个!