0

私はこの例に従いますが、変更したいと思います。ある値だけでなく、特定の行のどこかをクリックしたときに行を選択したいので、を追加しAjaxEventBehaviorます。問題は、プレーヤーが選択されているが、行の色が同じであるということです。なにが問題ですか ?

listItem.add(new AjaxEventBehavior("onclick") {

    private static final long serialVersionUID = 1L;

    @Override
    protected void onEvent(final AjaxRequestTarget target) {
        selectedPlayer = player;
        HighlitableDataItem<Player> hitem = (HighlitableDataItem<Player>) listItem;
        hitem.toggleHighlite();
    }
});
4

2 に答える 2

1

@jordeuが彼のコメントですでに指摘しているように、あなたは:に追加hitemする必要があります。AjaxRequestTarget

target.addComponent(hitem);

コンポーネントをに追加すると、コンポーネントAjaxRequestTargetのマークアップがXML応答に返され、サーバー側で行われた可能性のあるすべての変更と、更新されたモデルが返されます(これは動的モデルに役立ちます)。setOutputMarkupId(true)リクエストターゲットに追加するコンポーネントを呼び出すことを忘れないでください。idWicketは、XML応答で送信されたマークアップをDOMのどこで置き換えるかを知るために、マークアップID(HTML属性)を必要とします。または、javadocの言葉で:

マークアップを更新する必要があるコンポーネントは、AjaxRequestTarget#addComponent(Component)メソッドを介してこのターゲットに追加する必要があります。その本体は、ターゲットが処理されるときにレンダリングされてエンベロープに追加され、ajax応答が受信されるとクライアント側で更新されます。

マークアップを更新する必要があるコンポーネントには、生成されたマークアップに、Component#getMarkupId()から取得した値と等しいid属性が含まれていることが重要です。これは、htmlテンプレートでid属性を設定するか、値Component#getMarkupId()の属性をタグに追加する属性修飾子(MarkupIdSetterなど)を使用することで実現できます。

また、要素のスタイルを設定するためにAjaxを使用することは、一種のやり過ぎになる可能性があることを考慮に入れてください。サーバーとの対話が必要ない場合は、可能な場合はJavascript/jQueryを使用してクライアント側で要素のスタイルを設定することを検討してください。

于 2012-12-13T08:59:33.817 に答える