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

lma*_*gon 2 java wicket

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

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

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

Rob*_*roj 5

不,没有.你可以做的最好是子类化Label将检索用户名并在多个地方使用这个标签与不同的wicket:id's.像这样:

public class UserNameLabel extends Label{

    public UserNameLabel(String id) {
        super(id, getTheUsernameSomewhereFrom());
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 甚至更好地创建UsernameModel而不是直接使用String.Wicket可以重用构造的组件树,因此您不必再次遍历所有构造函数.为了能够重用标签,模型值应该改变,而不是组件本身, (3认同)