【问题标题】:Canonical Java EE way of checking for unsaved session data?检查未保存会话数据的规范 Java EE 方法?
【发布时间】:2013-03-03 19:13:55
【问题描述】:

我的应用有一个用例,其中有一个页面,用户可以在其中编辑数据并按保存或中断编辑并进行搜索或单击链接。这个框架有点奇怪,它使用 javascript 为每个被点击的链接提交一个表单,所以我们最终得到了一个混杂的 javascript 和 java hacks 促进对话框和检查未保存的数据变得混乱,我不得不询问它:

How to exclude components from javascript onkeydown

https://stackoverflow.com/questions/12525020/why-does-this-code-create-a-loop

我遇到了永远不会结束的对话,按“是”到“您有未保存的数据。您要继续吗?”循环到另一个相同的对话框,当我尝试修复它时没有任何效果。

现在程序可以在屏幕上运行,但是解决方案很混乱,如果有另一个错误或者我们注意到我的解决方案影响了其他组件,就会出现问题。

所以我想问你是否知道一种简单的 Java 方法来检查未保存的会话数据?发生的情况是向用户显示一个表单,当数据被编辑时单击链接应该会显示一个对话框,警告数据未保存。我认为不使用 javascript 是一个更好的解决方案,你能在这里评论和/或帮助我吗?

【问题讨论】:

  • @BalusC 这看起来很有趣。问题是我在页面上还有一个搜索框,它不应该从输入的搜索中触发对话框。所以我认为我必须从生成对话框的元素中排除搜索框。我在想,如果我不能在 Java 中做到这一点,那么最好有一个简单的 JS / JQuery 解决方案,而不必提交来显示对话框。
  • 只需相应地微调 jQuery 选择器。这只是一个启动示例。至于Java vs JS,我希望你真的明白Java是在webserver中运行的,而不是在webbrowser中运行的?因此,在让 Java 运行之前,您必须发送一个 HTTP 请求。在 onbeforeunload 期间发送 HTTP 请求是不可能跨浏览器可靠地实现的。
  • @BalusC 谢谢你的评论。是的,我们现在处理它的方式是使用 web / app 服务器(websphere)来处理 jspf 文件中的对话框,但我认为它可以完全使用 Java 或完全使用 Javascript 来解决,因为现在的逻辑很难遵循当它为isDirty 标志使用隐藏的表单变量以查看数据是否未保存时。这是目前的组合,我认为当我觉得我正在重新发明轮子时,应该有一些“官方”的解决方案。稍后我可以从我的“解决方案”中发布代码。

标签: javascript session jakarta-ee


【解决方案1】:

没有。

用户在浏览器中输入数据;除非您提交,否则服务器无法知道这一点。

【讨论】:

  • 已提交。这就是愚蠢的,当用户单击链接时提交表单,因此对话框实际上出现在对 Java 的调用之间。如果这变得难以理解,我深表歉意,这是我一段时间以来最奇怪的用例。
猜你喜欢
  • 1970-01-01
  • 2010-09-14
  • 2016-07-31
  • 2020-02-29
  • 2012-10-24
  • 1970-01-01
  • 2016-09-02
  • 2016-10-25
  • 1970-01-01
相关资源
最近更新 更多