Wicket编程模型:嵌套组件

时间:2013-11-25 11:12:02

标签: java nested wicket markup

我对Wicket很新。我喜欢它的核心原则,但在我看来,我也错过了一个非常关键的功能。 我想做什么:

定义组件

class MyPanel extends Panel { 
   ... 
} 

定义其标记

<html xmls:wicket....>
    <wicket:panel>
        This is my panel <br />
        <wicket:subComponents/>
    </wicket:panel>
</html>

(显然,我提出了<wicket:subComponents\>

定义页面

class MyPage extends WebPage { 

    public MyPage() { 
        super(); 
        MyPanel panel = new MyPanel("myPanel")); 
        panel.add(new Component...); 
        panel.add(new Component...); 
        ... 
    } 
} 

如您所见,我希望将组件嵌套到其他组件中,而无需在标记中明确添加嵌套组件并指定wicket:id。(请参阅上面的第二个代码段)

这样我就可以将Java类映射到标记片段(上面的第一个和第二个片段),并通过构建组件树完全描述Java中任何页面的整个标记(参见上面的第三个代码片段)。

现在的问题是:可以做到吗?如果是,怎么样?

1 个答案:

答案 0 :(得分:1)

为什么不直接使用转发器:

<html xmls:wicket....>
    <wicket:panel>
        This is my panel <br />
        <div wicket:id="subComponents"></div>
    </wicket:panel>
</html>

class MyPanel extends Panel { 
    RepeatingView repeater;
    MyPanel() {
        add(repeater = new RepeatingView("subComponents");
    }

    public void addSub(Component component) {
        repeater.add(component);
    }
}