0

ユーザー入力をキャプチャするために可変数のパネルを表示できる Wicket 1.5 を使用して Web ページを作成する必要があります。すべてのパネルは同じ構造です。ページは 1 つのパネルから始まり、必要に応じて動的に追加するためのボタンが含まれます。

そのため、ページが最初にレンダリングされる時点では、パネルの数は不明です。事実上、ページの構造を動的に変更することになります。これは、Javascript で可能です。document.addElement()

ページの読み込み時にすべてのコンポーネントを作成し、コンポーネントを選択的に表示/非表示にすることで、過去に同様のことを行いました。

ここでの違いは、コンポーネント (パネル) の数が最初は不明であることです。これが Wicket でどのように達成されるかはわかりません。

4

2 に答える 2

4

これは実際には一般的な使用例であり、通常は RepeatingView で行われます (ListView はすべてのパネルを再描画しますが、これはおそらくあなたが望むものではありません)。

http://www.stackoverflow.com/questions/7807514/can-i-add-an-element-to-a-repeatingview-without-refreshing-the-latter

final RepeatingView rv = new RepeatingView("rv");
rv.add(new MyPanel(rv.newChildId()));
...
AjaxLink addPanelLink = new AjaxLink("addPanelLink") {
     public void onSubmit(AjaxRequestTarget target) {
         MyOtherPanel pnl = new MyOtherPanel(rv.newChildId())
         rv.add(pnl);
         target.prependJavaScript(String.format(
                "var item=document.createElement('%s');item.id='%s';var container = $('%s'); container.append(item,container.firstChild);",
                "div",
                pnl.getMarkupId(),
                ".dom_parent_div_id"));
         target.add(pnl);
     }
};
于 2012-10-17T05:44:09.497 に答える
0

使用する:

  • ListViewパネルを保持するコンポーネント。

  • IndicatingAjaxSubmitLinkモデル オブジェクトをモデルに追加しますListView

オブジェクトを追加するたびに、webmarkupcontainer保持しているリストビューを Ajax で更新するだけです。

于 2012-10-16T22:57:25.653 に答える