Java 使用BookmarkablePageLink时保留嵌套树的状态(折叠/展开的节点)
我有一个问题,我找不到一个优雅的解决方案。我想使用Java 使用BookmarkablePageLink时保留嵌套树的状态(折叠/展开的节点),java,tree,wicket,Java,Tree,Wicket,我有一个问题,我找不到一个优雅的解决方案。我想使用NestedTree(或类似的东西)作为我的页面的简单菜单。每个节点都链接到一个页面,该页面显示由ID标识的内容。要获得好的URL和方便的书签,我想使用BookmarkablePageLinks链接到这些页面 但这样做每次都会创建一个全新的页面,从而破坏并重新创建树,重置其状态。因此,每单击一个链接,整个树就会折叠,用户必须再次打开它以选择另一个链接。 我找不到满足以下标准的解决方案: 每个选项卡/窗口都保留一个单独的状态 打开一个新选项卡会复
NestedTree
(或类似的东西)作为我的页面的简单菜单。每个节点都链接到一个页面
,该页面显示由ID标识的内容。要获得好的URL和方便的书签,我想使用BookmarkablePageLinks
链接到这些页面
但这样做每次都会创建一个全新的页面
,从而破坏并重新创建树,重置其状态。因此,每单击一个链接,整个树就会折叠,用户必须再次打开它以选择另一个链接。
我找不到满足以下标准的解决方案:
- 每个选项卡/窗口都保留一个单独的状态
- 打开一个新选项卡会复制从中打开的选项卡的状态,但随后是独立的
- 易于使用,这意味着您不必手动设置和恢复每个链接的状态
pageMapName
来维护会话中PageMaps
的映射及其菜单状态。但是Wicket 1.5(我现在使用的是6.8)的功能有了很大的改变
我将非常感谢关于如何做到这一点的解决方案或提示
但这样做每次都会创造一个全新的页面,因此
销毁并重新创建树,重置其状态。每个人都是这样
单击链接整个树将折叠,用户必须打开它
再次选择另一个链接
树将崩溃,因为正在页面加载时重新创建其模型。您可能将树的模型保留为页面上的成员变量。为了解决这个问题,您应该将树的模型存储在会话对象中。这样,您可以跨多个页面保留状态。您可以在Wicket 1.5.x和6.x中管理自己的页面映射。您所需要的只是一点Javascript,请参阅AjaxNewWindowNotifyingBehavior以获取灵感
然后,您可以在pageMap特定键下保持会话中树的扩展状态。这就是我最初所做的。然后我切换到在会话中存储状态。但当我打开两个选项卡时,这意味着麻烦:树的状态被混合/覆盖。你有没有建议跟踪几页的树状态?如果是这样,我会继续斯文迈耶的回答。