0

我们正在使用单页设计构建一个 Wicket 应用程序。我们试图找出创建基本结构的最佳方法。我的想法是每个动态加载的 HTML 组件都扩展了“面板”( http://wicket.apache.org/apidocs/1.4/org/apache/wicket/markup/html/panel/Panel.html)。

但是,如何将这样的面板加载到我的应用程序的 div 或内容区域中?我不想使用 AjaxTabbedPanel,因为我需要加载面板,例如通过单击菜单,但由于应用程序中某处的其他单击事件,我需要替换某些面板。

所以问题可能是:如何在 Wicket 中使用 Ajax 加载面板?例如来自菜单按钮,或例如来自应用程序中的任何按钮。

谢谢!塞巴斯蒂安

4

1 回答 1

3

您可以将面板添加到 div:

标记:

<div wicket:id="panel" />

Java代码:

final YourPanel panel = new YourPanel("panel");
add(panel);

要更改附加到页面的面板,我将用标记容器围绕面板,在(ajax)事件上更改面板(删除旧的并附加新创建的)并更新标记容器。

标记:

<div wicket:id="markupContainer">
    <div wicket:id="panel" />
</div>

Java代码

// initially create the panel
final WebMarkupContainer wmc = new WebMarkupContainer("markupContainer");
wmc.setOutputMarkupId(true);
add(wmc);
Panel panel = new YourPanel("panel");
wmc.add(panel);

// ...

// updating the panel on an ajax event (here: button click)
final AjaxButton yourButton = new AjaxButton(...) {
    @Override  
    public void onSubmit(AjaxRequestTarget target) {
        wmc.remove(panel);
        panel = new AnotherPanel("panel");
        wmc.add(panel);
        target.add(wmc);
    }
}
// ...
于 2012-09-04T08:27:37.660 回答