2013-05-22 1 views
1

сталкивается следующей проблемой:Установленного значения от печенья TextField <Long> в калитке

У меня есть калитка страница с фильтром. Фильтр является форма компонент, который содержит этот TextField:

TextField<Long> categoryField = new TextField<Long>("categoryId", 
    BindingModel.of(model, binding.categoryId()), 
    Long.class); 
add(categoryField); 

Я хочу, чтобы позволить пользователю вспомнить его последние опции фильтра, так что я хранить значение поля в печенье

CookieUtils utils = new CookieUtils(); 
utils.save(categoryField); 

Это прекрасно работает и значение поля магазин в файлах cookie. Но проблема в том, когда я хочу прочитать значение из печенья и установить его к компоненту через

utils.load(categoryField); 

тогда я получаю:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long 
    at cz.myproject.domain.MyFilterBindingPath$CategoryIdBinding.setWithRoot(MyFilterBindingPath.java:494) 
    at cz.myproject.binding.BindingModel.setObject(BindingModel.java:66) 
    at org.apache.wicket.Component.setDefaultModelObject(Component.java:3061) 
    at org.apache.wicket.markup.html.form.FormComponent.setModelObject(FormComponent.java:1560) 
    at org.apache.wicket.markup.html.form.FormComponent.updateModel(FormComponent.java:1104) 
    at org.apache.wicket.markup.html.form.FormComponent.setModelValue(FormComponent.java:1046) 
    at org.apache.wicket.util.cookies.CookieUtils.load(CookieUtils.java:135) 

спасибо за помощь

+0

Что такое formComponent? Это должно завершиться неудачно уже во время преобразования (до updateModel), поэтому, возможно, formComponent не вводится таким же образом, как и поле CategoryField. – zeratul021

+0

Извините, что это была ошибка в тексте ... – Daniel

+0

«ClassCastException» был поднят в коде (?) 'Cz.myproject'. Возможно, нам нужно увидеть соответствующий код, чтобы увидеть, что происходит. –

ответ

0

Ваш код немного неполным. Он не показывает реализацию BindingModel. Даже если вы посмотрите на TextField, он ожидает в качестве модели любой реализации IModel, но CookieUtil.load() возвращает String. Таким образом, тип возврата не может быть отличен от String до Long. Измените свою модель, чтобы она была безопасной.

Смежные вопросы