2

Wicket の DropDownChoice にツールチップ (タイトル属性など) を個々のオプション要素に割り当てる方法はありますか?

次の形式のセレクトボックス項目があります。

public class SelectBoxItem
{
    private Long id;
    private String label;
    private String description;
}

すべてのアイテムがデータベースからロードされます。

ID をキーとして、ラベルを値として使用するために、ChoiceRenderer を使用して DropDownChoice コンポーネントを構成します。

ここで、説明をツールチップ メッセージとしても使用するように構成する必要があります。


この関連スレッドはインターネット上でしか見つかりませんでした。関連する Wicket クラスをブラウズすると、著者と同じ結論に達しました。たとえば、これはおそらく現在のバージョンの DropDownChoice/ChoiceRenderer クラスでは不可能でした。そうですか?その場合、それを可能にする同様のコンポーネントはありますか?


(私のコードベースのより包括的な説明については、同じコンテキスト内で別の問題について尋ねた他の質問を参照してください。)

4

2 に答える 2

4

これがこの問題に対する私の解決策です。アドバイスをくれた Andrea Del Bene に感謝します。

public class TitledDropDownChoice<T> extends DropDownChoice<T> {

//  ... constructors from superclass ...

@Override
protected void appendOptionHtml(AppendingStringBuffer buffer,
        T choice, int index, String selected) {

    super.appendOptionHtml(buffer, choice, index, selected);

    // converts <option value="foo">bar</option> to
    // <option value="foo" title="bar">bar</option>
    String replString = "value=\"" + getChoiceRenderer()
        .getIdValue(choice, index) + "\"";
    int pos = buffer.indexOf(replString);
    buffer.insert(pos + replString.length(), 
        " title=\"" + getChoiceRenderer().getDisplayValue(choice) + "\"");

}

}
于 2012-09-06T12:26:37.717 に答える
1

メソッド appendOptionHtml をオーバーライドしようとしましたか? これを使用して、目的の html (つまり、title="toolTipText") を追加できます。

于 2012-09-02T12:00:47.757 に答える