有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我第一次用Wicket建立我的网站,我想创建一个门户,在那里用户名将显示在多个地方(用户菜单、标题,可能在页面上的其他地方…)。Wicket显然不喜欢具有相同wicket:id的标签,因为我得到:

The component [Component id = userName] was rendered already. You can render it only once during a render phase.

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


共 (2) 个答案

  1. # 1 楼答案

    不,没有。您所能做的最好是将Label子类化,该子类将检索用户名,并在多个具有不同wicket:id的位置使用此标签。如下所示:

    public class UserNameLabel extends Label{
    
        public UserNameLabel(String id) {
            super(id, getTheUsernameSomewhereFrom());
        }
    
    }
    
  2. # 2 楼答案

    Wicket构建页面以呈现为与Dom(HTML)树平行的层次结构。Wicket中的所有内容都是具有自己id的组件,映射到Dom树中的插入点。如果具有相同id的组件是可重用的(这将导致math.graph模糊层次结构,并且作为图形,将导致循环),则呈现将不是确定性的

    简单的答案是您不能重用组件

    我不建议乱动ID。只需使用OOP方式,创建一个添加/提供标签的基本组件