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

时间:2010-11-14 02:36:05

标签: java wicket

我有一个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());

2 个答案:

答案 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以上)。减少铸造,类型安全因此你所做的事情不可能发生。