我是第一次使用Wicket构建我的网站,我想创建一个门户网站,其中用户名将显示在多个位置(用户菜单,标题,可能是页面上的其他位置......)。 Wicket显然不喜欢具有相同wicket:id
的标签,因为我得到:
组件[Component id = userName]已经呈现。您只能在渲染阶段渲染一次。
是否有其他方法可以在不同地方显示相同的动态文字,而无需为每个地方创建新标签?
答案 0 :(得分:5)
不,没有。你可以做的最好的是子类Label
,它将检索用户名,并在不同的wicket:id's的多个地方使用这个标签。像这样:
public class UserNameLabel extends Label{
public UserNameLabel(String id) {
super(id, getTheUsernameSomewhereFrom());
}
}
答案 1 :(得分:3)
Wicket构建页面以呈现为与Dom(HTML)树平行的层次结构。 Wicket中的所有内容都是具有自己的id的组件,映射到Dom树中的插入点。如果具有相同id的组件可以重复使用,则渲染将不是确定性的(这将导致数学。图形模糊了层次结构,并且作为图形,将导致循环)。
简单的答案是您无法重复使用组件。
我不建议摆弄ids。只需使用OOP方式并创建一个添加/提供标签的基本组件。