1

我有一个 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'在此面板中,用户必须填写公式中的多个字段。现在,当用户单击例如 Home 时,addDocumentPanel将替换为homePanel. 发生这种情况时,我想询问用户是否要保存未保存的数据。

SOLID 的一个好地方是onRemove()函数,Panel但在这里我没有任何AjaxRequestTarget或其他事情要通过 JavaScript 或 wickets ModalWindow 询问用户。

任何想法如何做到这一点?

4

1 回答 1

0

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

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

于 2013-06-13T15:26:53.840 回答