Wicket在模型中搜索DropDownChoice的選擇的方式存在問題。覆蓋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>
java的呈現代碼/編譯檢票形式:
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 for class:java.lang.Long ...」 Wickets希望我把完整的Bean「Language」放在Users對象中。不過,我只在用戶對象中有ID,而不是完整的Bean。
如何讓Wicket使用簡單的ID並且不期望整個對象可用?我想我需要在DropDownChoice中覆蓋一些方法,但是我找不到任何合適的方法。
謝謝! 塞巴斯蒂安
哪個導葉版本? –
Wicket 6.0.0 Beta3(所以應該與6.0.0 Final相同) –