0

シングルページデザインを使用してWicketアプリケーションを構築しています。基本的な構造を作成するための最良の方法を見つけようとしています。私の考えでは、動的にロードされる各HTMLコンポーネントは「Panel」( http://wicket.apache.org/apidocs/1.4/org/apache/wicket/markup/html/panel/Panel.html)を拡張します。

ただし、そのようなパネルをアプリケーションのdivまたはコンテンツ領域にロードするにはどうすればよいですか?AjaxTabbedPanelを使用したくありません。たとえば、メニューをクリックしてPanelをロードする必要があるだけでなく、アプリケーションのどこかで他のクリックイベントが発生した結果、特定のPanelを置き換える必要があるためです。

したがって、質問は次のようになります。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 に答える