Калитка - использовать значения ввода карты в качестве объектов в модели, где я знаю ключ для каждого компонента.

У меня есть Java Map, где я храню данные, которые должны отображаться в строке в таблице в веб-приложении. Я использую Викет 6.

Есть ли способ связать метки калитки (которые будут ячейками в моей таблице) с String версией объекта в Map, зная ключ для каждой метки.

Должен ли я реализовать свою собственную версию IModel или в библиотеках Wicket 6 есть какой-либо удобный класс? Насколько я вижу, их нет, но я могу ошибаться...


person DPM    schedule 18.04.2013    source источник


Ответы (2)


Вы можете реализовать IModel, также вы можете реализовать IConverter<C>.

Чтобы использовать пользовательский конвертер, переопределите Component#getConverter следующим образом:

   Label lbl = new Label("lbl"){
        @Override
        public <C> IConverter<C> getConverter(Class<C> type) {
            //return converter here
        }
    };

Для компонентов типа Label можно реализовать только метод convertToString.

person Alexey Mukas    schedule 18.04.2013
comment
Спасибо за предложение IConverter для представления String. Я думаю, что в конечном итоге я реализую модель входа моей собственной карты, поскольку я не могу найти легкодоступный класс. - person DPM; 18.04.2013
comment
примечание: IConverter необходим, если вы измените свою метку, скажем, на TextField - person Alexey Mukas; 18.04.2013
comment
Дополнительную информацию вы можете найти в отличном руководстве code.google.com/p/wicket-guide (см. гл. 10.3) - person Alexey Mukas; 18.04.2013

Я думаю, что на данный момент такой реализации IModel нет. Не так сложно написать свой собственный IModel<String>, который берет ваши Map и key в конструкторе и возвращает String.valueOf(map.get(key)) ;)

Просто убедитесь, что либо ваш Map равен Serializable, либо нет, вы должны указать LoadableDetachableModel для своей карты и использовать его.

person RobAu    schedule 19.04.2013