Wicket - 在多个位置显示相同的文本

时间:2014-09-07 18:05:54

标签: java wicket

我是第一次使用Wicket构建我的网站,我想创建一个门户网站,其中用户名将显示在多个位置(用户菜单,标题,可能是页面上的其他位置......)。 Wicket显然不喜欢具有相同wicket:id的标签,因为我得到:

  

组件[Component id = userName]已经呈现。您只能在渲染阶段渲染一次。

是否有其他方法可以在不同地方显示相同的动态文字,而无需为每个地方创建新标签?

2 个答案:

答案 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方式并创建一个添加/提供标签的基本组件。