Задать объект модели по умолчанию в выпадающем списке? - PullRequest
0 голосов
/ 14 ноября 2010

У меня есть 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 ]

1 голос
/ 14 ноября 2010

Предположим, у вас есть метод в db, который возвращает группу с указанным идентификатором, это должно работать:

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

Последняя строка (где вызывается setModelObject) в вашем фрагменте кода избыточна как объект моделиможет быть установлен в конструкторе компонента.

0 голосов
/ 21 ноября 2010

Это не является прямым ответом, но может быть причиной того, что вы сделали то, что сделали - вы попытались установить объект модели в качестве идентификатора группы, тогда как вы создали DropDownChoice из объекта группы (не целых чисел).Поэтому, если опубликованный код является вашим реальным кодом, и вы не застряли с калиткой 1.3x или ниже, я бы порекомендовал вам начать использовать универсальные модели (Wicket 1.4x и далее).Меньше кастинга, безопасность типов, поэтому то, что вы сделали, не могло произойти.

...