我有一个listView来列出数据库中的表,我有一列来编辑一行。编辑链接将响应设置为编辑页面。编辑页面的构造函数采用与数据库表相关的对象。我在编辑页面中有一个下拉选项。我想用对象实际值而不是“选择一个”选项初始化下拉选项的选定值。 groupDropDownChoice.setModelObject(user.getGroupId());不处理问题。我已经尝试过user.getGroupName(),并且只是用户对象,它们都没有工作......怎么办?感谢
public editUserPage(final User user) {
super();
try {
DatabaseApp db = new DatabaseApp();
groupTypes = db.getGroups();
hospitals = db.getHospitals();
polikliniks = db.getPolikliniks();
} catch (ClassNotFoundException ex) {
Logger.getLogger(editUserPage.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(editUserPage.class.getName()).log(Level.SEVERE, null, ex);
}
addUserForm = new Form("form");
groupDropDownChoice = new DropDownChoice("type", new Model(""), groupTypes,
new IChoiceRenderer() {
public Object getDisplayValue(Object object) {
return ((Group) object).getName();
}
public String getIdValue(Object object, int index) {
return Integer.toString(index);
}
});
groupDropDownChoice.setModelObject(user.getGroupId());
答案 0 :(得分:1)
假设你在db中有一个方法,它返回一个给定id的组,这应该有效:
groupDropDownChoice = new DropDownChoice("type", new Model(db.getGroupById(user.getGroupId())), groupTypes, ...
代码片段中的最后一行(其中调用setModelObject)是多余的,因为可以在组件的构造函数中设置模型对象。
答案 1 :(得分:0)
这不是直接答案,但可能是你做了你所做的事情的原因 - 你试图将模型对象设置为组ID,而你从组对象(不是整数)构造了DropDownChoice。因此,如果发布的代码是您的实际代码,并且您没有坚持1.3x或更低的wicket,我建议您开始使用通用模型(Wicket 1.4x以上)。减少铸造,类型安全因此你所做的事情不可能发生。