我对 Wicket 很陌生,所以我可能在这里犯了一个可怕的错误。
我正在尝试将列表视图添加到列表视图,但收到错误消息,我知道此错误与组件的层次结构有关,因为 java 文件和 html 文件的层次结构不同。我只是不知道如何解决它。有人可以给我一些指示吗?
相关代码(设置列表视图):
final ListView<MenuItem> subListView = new ListView<MenuItem>("menuSubView", new ArrayList<MenuItem>()) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<MenuItem> item) {
//DO SOMETHING
}
};
subListView.setRenderBodyOnly(true);
subListView.setReuseItems(true);
ListView<MenuItem> listView = new ListView<MenuItem>("menuView", menuItems) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<MenuItem> item) {
final MenuItem menuItem = item.getModelObject();
AjaxLink<MenuItem> aLink = new AjaxLink<MenuItem>("menuItemLink") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
if(target != null) {
//DO SOMETHING
}
}
};
aLink.add(new Label("linkText", menuItem.getText()));
item.add(aLink);
item.add(subListView);
}
html:
<wicket:panel>
<ul wicket:id="menuView">
<li>
<a href="#" wicket:id="menuItemLink" >
<span wicket:id="linkText"></span>
</a>
<ul wicket:id="menuSubView">
<li>
<div wicket:id="subItemText"></div>
</li>
</ul>
</li>
</ul>
错误:
无法在 [ListItem [Component id = 0]] 中找到 ID 为“menuSubView”的组件预期:“viewerPanel:optionsMenu:menuView:0.menuSubView”。发现名称相似:'viewerPanel:optionsMenu:menuView:1:menuSubView' MarkupStream: [markup = file:.../panels/menu/SimpleMenu.html
</li> --> , index = 9, current = '' (line 0, column 0)] at org.apache.wicket.markup.MarkupStream.throwMarkupException(MarkupStream.java:526) at org.apache.wicket。 MarkupContainer.renderNext(MarkupContainer.java:1435) ....
预先感谢您的回复。
亲切的问候,布拉姆