0

DropDownChoice にはほとんど問題はありません。Object のリストを使用して DropDownChoice を作成します。たとえば、次のとおりです。

public MyClass 
  private String code;
  private String description;
[...]

別のオブジェクトを取るより

public FormModelObject
   private String code;

ChoiceRender を使用して、何を表示し (description プロパティ)、何を取得するか (code プロパティ) を選択する DropDownChoice を簡単に作成できます。

残念ながら、DropDownChoice はオブジェクト全体 (MyClass) を返し、FormModelObject 内でプロパティ Code を設定できません (MyClass で toString() メソッドを起動するだけです)。

Ajaxを使用せずに取得するにはどうすればよいですか?

ありがとう

4

4 に答える 4

1

DropDownChoice の onModelChanged() メソッドをオーバーライドし、residenceZipCode を新しい値で更新できます。何かのようなもの :

DropDownChoice<City> drop = new DropDownChoice<City>("residenceZipCode",new Model(), cityList,new ChoiceRenderer<City>("name", "zipcode")){
     onModelChanged(){
       String newZipCode =  (String)PropertyResolver.getValue("zipCode",getModelObject());
       PropertyResolver.setValue("residenceZipCode", res, newZipCode, new  PropertyResolverConverter());
     }

};

DropDownChoice には独自のモデルが必要です。

于 2012-08-22T19:00:48.200 に答える
1

DDC の type 引数を見てください。あなたの場合は City です。したがって、DDC は City オブジェクトで動作します。

それが望ましくない場合は、型を変更すると、コンパイラが次のように案内します。

DropDownChoice<String> drop = new DropDownChoice<String>("residenceZipCode",zipCodesList,new CityChoiceRenderer());

class CityChoiceRenderer implements IChoiceRenderer<String> {
  Object getDisplayValue(String zipCode) {
    return zipCodeToName(zipCode);
  }

  String getIdValue(String zipCode, int index) {
    return zipCode;
  }
}
于 2012-08-23T05:57:08.130 に答える
1

モデルの連鎖を試してください。フォームの変数コードを、次のように構築されたプロパティ モデルに置き換える必要があります。

//this is the model of your DropDownChoice
Model<MyClass> myModel = new Model<MyClass>();
//...

PropertModel myCode = new PropertModel(myModel, "code");

フォーム内のコードの代わりに myCode を使用してください。

于 2012-08-22T14:02:21.400 に答える
0

いくつかのコードを書く方が良いです:

    class City {
      private String zipCode;
      private String name;
    }

    class Residence {
      private String residenceZipCode;
    }

protected Residence res;

public ResidenceForm() {
  super("form", new CompoundPropertyModel<Residence>(res));

  List<City> cityList = someManager().loadAllCity();

  DropDownChoice<City> drop = new DropDownChoice<City>("residenceZipCode",cityList,new ChoiceRenderer<City>("name", "zipcode"));
add(drop);

今。居住地または都市を変更できず、onSubmit ボタンのメソッド内にコードを記述できません。

私が欲しいのはレジデンス内の郵便番号です。私が今得ているのは City.toString() に相当するものです

于 2012-08-22T14:25:01.223 に答える