4

ウィケットでは、DropDownChoice の IChoiceRenderer は次のように使用されます。

IChoiceRenderer renderer = new IChoicerRenderer() {
    public Object getDisplayValue(Object object) {
        return ((Country) object).getName();
    }

    public String getIdValue(Object object, int index) {    
        return ((Country) object).getId() + "";
    }
};

countries.setChoiceRenderer(renderer);

IChoiceRenderer クラスの仕様には、次のように記載されています。

1 つの選択肢をレンダリングします。内部表現に使用される「id」値を、このレンダラーを使用するコンポーネントのユーザーに表示される値である「表示値」から分離します。

getDisplayValue() の説明は次のとおりです。

エンド ユーザーに表示する値を取得します。

つまり、国名を表示するのに役立ちます。右?

getIdValue() の説明は次のとおりです。

このメソッドは、オブジェクトの id 値を取得するために呼び出されます (choice 要素の value 属性として使用されます)。id は、主キーのようにオブジェクトから抽出できます。または、リストが安定している場合は、単に toString を返すことができます。索引。

どういう意味ですか?

ここでの DropDownChoice のようなさまざまな wicket コンポーネントのモデルの一般的な id プロパティは、Long 型です。getIdValue() はソートに役立ちますか?

または、HTML の id タグを生成するのに役立ちますか?

前述の「主キー」の概念とは何ですか?

ありがとうございます。

4

2 に答える 2

4

オブジェクトがマップに配置されると想像してください。ここで、id がキーで、値が参照するオブジェクトです。2 つのオブジェクトが同じ ID を共有している場合、またはオブジェクトの ID が変更されている場合、マップは正しく機能しません。

これは、主キーであるべきだと彼らが言っていることです。

ちなみに、IChoiceRenderer単純な状況では最初から実装する必要はありません。あなたの場合は、new ChoiceRenderer( "name", "id" );

于 2011-05-09T19:25:23.360 に答える
1

ドロップダウン リストには、キーと値のペアである項目があります。したがって、国の例を使用して、国から国コードへの次のマッピングを検討してください。

Key             Value
---------------------
Afghanistan     AF
Aland Islands   AX
Albania         AL
Algeria         DZ
American Samoa  AS
Andorra         AD
Angola          AO 

ユーザーがアルジェリアを選択した場合、キーDZはその選択を一意に識別するために使用されます。したがって、メイン オブジェクトがプロパティPersonを持つ である場合countryOfCitizenship、そのプロパティはCountryid を持つに設定されDZます。Wicket は id を使用して、ドロップダウンからの選択をプロパティの値として設定します。また、id を使用して、そのプロパティ セットを持つオブジェクトのページが表示されたときに、ドロップダウンから選択する値を決定します。

于 2011-05-09T17:15:46.417 に答える