2012-09-04 70 views
0

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

但是,我怎么能加载这样一个面板到div或内容区域到我的应用程序?我不想使用AjaxTabbedPanel,因为我需要通过单击菜单来加载Panels,但也可能由于应用程序中某处的其他单击事件而导致我需要替换某些Panels。

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

谢谢! 塞巴斯蒂安

回答

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); 
    } 
} 
// ... 
+0

非常感谢您的例子中,我们会尝试吧! –

相关问题