【发布时间】:2021-03-17 17:40:10
【问题描述】:
我在将 Apache Wicket 7.9 迁移到 9.2 版本时卡住了。
在 7.9 版本中,有 visitChildren (link) 方法,它基于 clazz 参数返回 ComponentHierarchyIterator (link)。 ComponentHierarchyIterator 和 visitChildren 方法都在 7.9 中被弃用,并在最新版本中被删除。
文档说使用Use {@link org.apache.wicket.util.visit.IVisitor} instead 的ComponentHierarchyIterator。但是,IVisitor 是一个接口,我无法找到返回所有组件层次结构或满足要求的访问者实现。
有一个 DeepChildFirstVisitor 抽象类,它是我正在尝试使用的 IVisitor 的实现。
我的 7.9 版本代码库是:
for (Component m : pushMenuContainer.visitChildren(PushMenu.class)) {
if (!menu.equals(m)) {
((PushMenu) m).hide();
}
}
迁移后我的 9.2 代码库将类似于
for (Component m : pushMenuContainer.visitChildren(PushMenu.class, new IVisitorUnknownImplementation())) {
if (!menu.equals(m)) {
((PushMenu) m).hide();
}
}
如果在 Apache Wicket 9.2 中作为 ComponentHierarchyIterator 的替代品可用,我需要关于应该使用哪个访问者的指导?
另外,如果没有可用的,那是否意味着我必须实现自己的层次结构访问者?
【问题讨论】: