0

ページの一部である他の含まれている親パネルに子パネルのセットを追加する必要があるアプリケーションで作業しています。

一度に1から3の親パネルを配置でき、親の間に合計7つの子パネルを配置できます。

私はすべてが適切に追加されているところにそれを持っていますが、ウィケットリピーターを介して追加されたこれらのパネルをスタイリングしようとすると、私の通常の方法はどれも機能しません。

https://cwiki.apache.org/WICKET/listview-and-other-repeaters.htmlおよびhttps://cwiki.apache.org/WICKET/pageにあるように、ListViewのpopulateItemメソッドをオーバーライドしてみました。 -with-dynamic-components.html

        add(new ListView<ParentPanel>("parentPanels", panels) {

        @Override
        protected void populateItem(ListItem<ParentPanel> item) {

            ParentPanel temp = (ParentPanel) item.getModelObject();

            temp.add(new AttributeAppender("class", new Model<String>("panelClass"), ""));

            item.add(temp);
        }

    });

...またはマークアップ:

        <wicket:container wicket:id="listOfPanels">
            <wicket:panel wicket:id="panelClass"/>
        </wicket:container>

...または、追加するパネルのコンストラクターに属性修飾子を追加することもできます。

これはすべて無視されているようです。私は何か基本的なものが欠けていますか?これを追加するためにパネルの数とタイプを計算する必要がなかった場合、これは問題にはなりませんが、リピーターを使用するとスタイルが削除されます。

4

3 に答える 3

2

属性修飾子をアイテムに追加し、レンダリングされないwicket:containerではなく、divのようにレンダリングされるhtmlタグにアイテムをアタッチします。

Itemサブクラスにクラスを追加し、リピーターのnewItem()メソッドをオーバーライドして、独自のクラスを返すこともできます。例としてOddEvenListItemを参照してください。

于 2012-05-24T16:48:25.653 に答える
0

ListView へのテンプレートとしてパネルを与えることは良い習慣ではありません。こっちの方が便利かも

       add(new ListView<Object>("parentPanels", panels) {

    @Override
    protected void populateItem(ListItem<Object> item) {

        ParentPanel temp = new ParentPanel("panelClass",item.getModelObject());
        //ParentPanel temp = (ParentPanel) item.getModelObject();

        temp.add(new AttributeAppender("class", new Model<String>("myPanel"), ""));

        item.add(temp);
    }

});

このようなHTMLも試してください

    <div wicket:id="listOfPanels">
        <div wicket:id="panelClass"></div>
    </div>

これは、 myPanelという名前の css クラスで生成されます。

また、パネルの html とそのコンポーネントに css クラスを追加する必要があります。

于 2012-05-25T14:14:01.043 に答える