使用BookmarkablePageLink时保留NestedTree的状态(折叠/扩展节点)

时间:2013-08-24 20:46:44

标签: java tree wicket

我遇到一个问题,我无法找到一个优雅的解决方案。我想使用NestedTree(或类似的东西)作为我页面的简单菜单。每个节点都链接到Page,显示由ID标识的内容。为了获得不错的网址和简单的书签,我想使用BookmarkablePageLinks链接到这些网页。

但是这样做每次都会创建一个全新的Page,从而破坏并重新创建树,重置它的状态。因此,对于每个链接,单击完整的树折叠,用户必须再次打开它以选择另一个链接。 我找不到满足这些标准的解决方案:

  • 每个标签/窗口都保留一个单独的状态
  • 打开一个新标签会从打开的标签中复制状态,但该标签是独立的
  • 易于使用,这意味着您无需为每个链接手动设置和恢复状态

如果在调用带书签的URL时未恢复状态,那就没关系了。

使用Wicket 1.4,我可以使用pageMapName在会话中维护PageMaps的地图及其菜单状态。但是Wicket 1.5(我现在使用6.8)已经大大改变了这个功能。

我非常感谢有关如何执行此操作的解决方案或提示。

2 个答案:

答案 0 :(得分:1)

  

但是这样做每次都会创建一个全新的页面   摧毁并重新创建树,重置它的状态。所以每个   链接单击完整的树折叠,用户必须打开它   再次选择另一个链接。

树崩溃,因为它的模型正在页面加载时重新创建。您可能将树的模型保留为页面上的成员变量。要解决此问题,您应该将树的模型存储在会话对象中。这样,您可以在多个页面中保留状态。

答案 1 :(得分:0)

您可以在Wicket 1.5.x和6.x中管理自己的pageMaps。您只需要一点Javascript,请参阅AjaxNewWindowNotifyingBehavior获取灵感。

然后,您可以在页面地图特定的键下保持树的扩展状态。