java - Wicket - 确认面板更换/删除以保存未保存的数据

标签 java replace wicket panel confirmation

我有一个 Wicket SPA Web 应用程序,我希望用户确认在面板替换/删除面板上是否希望保存面板中输入的数据? 我的应用程序结构如下所示

<body>
 <nav>
  <a wicket:id="home">Home</a>
  <a wicket:id="documents">Documents</a>
  <a wicket:id="user">Users</a>
  <a wicket:id="logout">Logout</a>
 </nav>
 <main wicket:id="panel"></main>
</body>

现在有一个 addDocumentPanel,当用户单击“添加新文档”某处时,它会替换为 wicket:id='panel'。在此面板中,用户必须填写公式中的多个字段。现在,当用户单击“主页”时,addDocumentPanel 会被 homePanel 替换。发生这种情况时,我想询问用户是否要保存未保存的数据。

一个可靠的好地方是 onRemove() Panel 的功能,但这里我没有任何 AjaxRequestTarget 或其他东西可以通过 JavaScript 或 wickets ModalWindow 询问用户。

有什么想法吗?

最佳答案

向所有导航链接添加一个行为,单击该链接时会执行一个简单的逻辑来检查表单是否包含任何脏(未保存)数据。我想这可以在客户端完成,无需服务器往返,并且在发现表单脏时,您可以向用户显示一个 window.alert 对话框。

更重的方法是使用您自己的 AjaxLink 子类作为导航链接,并在 onClick(AjaxRequestTarget target) 处理程序中执行 ModalWindow 魔法。然而,这会导致您的链接包含不可添加书签的网址。如果这不是一个问题(这是一个内部应用程序,而不是面向互联网的网站),那么这也可能有效。

关于java - Wicket - 确认面板更换/删除以保存未保存的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17086837/

相关文章:

java - jsp中自定义错误信息

java - MongoDB 明显太大 16mb 上限

在 R 中同时将 "1"替换为 "0",将 "0"替换为 "1"

css - 仅将 css 应用于数字

java - 在 Apache Wicket 中更改模态窗口的 unloadConfirmation 消息

java - Android Jellybean Activity 生命周期错误

java - 具有类和子类空错误的数组

Javascript替换字符串中的utf字符

mysql - 在 MySQL 上用 pdo 替换字符串

ajax - Wicket 和复杂的 Ajax 场景