我对 Wicket 在模型中搜索 DropDownChoice 的选择的方式有疑问。
例子
//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“语言”放入 Users 对象中。但是,我只有用户对象中的 ID,而不是完整的 Bean。
我怎样才能让 Wicket 只使用 ID 而不是期望整个对象都可用?我想我需要覆盖 DropDownChoice 中的一些方法,但我找不到合适的方法。
谢谢!塞巴斯蒂安