モデル内の DropDownChoice の選択を Wicket が検索する方法に問題があります。
例
//User Bean
public class Users {
private Long language_id;
public Long getLanguage_id() {
return language_id;
}
public void setLanguage_id(Long language_id) {
this.language_id = language_id;
}
}
//Language Bean
public class Language {
private Long language_id;
private String name;
public Long getLanguage_id() {
return language_id;
}
public void setLanguage_id(Long language_id) {
this.language_id = language_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
ウィケット HTML
<form wicket:id="form">
<select wicket:id="language_id"/>
</form>
Wicket フォームをレンダリング/コンパイルする Jave コード:
public class UserForm extends Form<Users> {
public UserForm(String id, Users user) {
add(new DropDownChoice<Language>("language_id", Application
.getBean(LanguageDaoImpl.class).getLanguages(),
new ChoiceRenderer<Language>("name", "language_id")));
}
}
問題は、レンダリングが正常に機能し、すべての言語がドロップダウン選択にあることです。しかし、ユーザーがフォームに読み込まれるとすぐに、Wicket は Long 値 "language_id" でプロパティ "language" を検索し、"No get method defined for class: java.lang.Long ..." のような例外をスローします。 Wickets は、完全な Bean "Language" を Users オブジェクトに入れることを期待しています。ただし、完全な Bean ではなく、Users オブジェクトに ID があるだけです。
Wicket に ID のみを使用させ、オブジェクト全体が使用可能になることを期待しないようにするにはどうすればよいですか? DropDownChoice のメソッドを上書きする必要があると思いますが、適切なものが見つかりませんでした。
ありがとう!セバスチャン