Java 在dropdownChoice中设置默认模型对象?

Java 在dropdownChoice中设置默认模型对象?,java,wicket,Java,Wicket,我有一个listView来列出数据库中的一个表,还有一个列来编辑一行。编辑链接将响应设置为编辑页面。编辑页的构造函数接受与数据库表相关的对象。我在编辑页面中有一个下拉选项。我想用对象的实际值来初始化dropdownchoice的选定值,而不是“选择一个”选项。 groupDropDownChoice.setModelObject(user.getGroupId());不处理这个问题。我尝试了user.getGroupName(),但只使用了user对象,它们都不起作用。怎么办?谢谢 public

我有一个listView来列出数据库中的一个表,还有一个列来编辑一行。编辑链接将响应设置为编辑页面。编辑页的构造函数接受与数据库表相关的对象。我在编辑页面中有一个下拉选项。我想用对象的实际值来初始化dropdownchoice的选定值,而不是“选择一个”选项。 groupDropDownChoice.setModelObject(user.getGroupId());不处理这个问题。我尝试了user.getGroupName(),但只使用了user对象,它们都不起作用。怎么办?谢谢

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());

假设在db中有一个方法返回给定id的组,这应该可以:

groupDropDownChoice = new DropDownChoice("type", new Model(db.getGroupById(user.getGroupId())), groupTypes, ...

代码段中的最后一行(调用setModelObject的地方)是多余的,因为可以在组件的构造函数中设置模型对象

这不是直接的答案,但可能是您这样做的原因-您试图将模型对象设置为组id,而您从组对象(不是整数)构建了DropDownChoice。因此,如果发布的代码是您的实际代码,并且您没有被wicket 1.3x或更低版本所困扰,我建议您开始使用通用型号(wicket 1.4x之后)。少施法,类型安全,所以你所做的不会发生