2012-09-04 28 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

非常感謝您的例子中,我們會嘗試吧! –

相關問題