2011-09-25 2 views
4

Я пытаюсь добавить и извлечь с помощью ключа как String и значение List<object> в Wicket PageParameters.Wicket pageparameter

В то время как я выборки значение с ключом, я получил classcastException:String cant be converted into list.

Я использую что-то вроде этого:

List<Example> list = (List<Example>)params.get("ExampleList"); 

Любая помощь приветствуется.

+0

Какую версию вы работаете? –

+1

Можете ли вы показать фрагмент кода, соответствующий заполняемым параметрам? –

ответ

9

Вы не можете хранить объекты в PageParameters, потому что PageParameters являются абстракцией параметров HTTP-запроса, и протокол поддерживает только значения String. Вы должны получить список строк из параметров и обработать их до Example объектов.

List<StringValue> values = parameters.getValues("examples"); 
for(StringValue value : values) { 
    Example example = new Example(value.toString()); 
    examples.add(example); 
} 
+0

спасибо. Я попробую это и отметю этот ответ. – jshree

+0

Я не понимаю что-то в этом комментарии. Я думаю, что эта строка должна быть String values ​​= parameters.get ("examples"); поскольку метод get параметра возвращает «string». То, что я не могу назначить списку. Даже если я получаю массив String из get() mthd, я не могу назначить строковый объект как экземпляр объекта Example. «Value.toString» может не ожидаться в конструкторе класса Example. Поэтому я не знаю, будет ли это решение работать. Пожалуйста, дайте мне знать, если я ошибаюсь. – jshree

+0

В моем примере используется код для Wicket 1.5, где API для 'PageParameters' изменился. –

0
// Populate PageParameters 
final String dynamicValue = textFieldID.getModelObject();  
PageParameters pageParameters = new PageParameters(); 
pageParameters.add("username", usernameValue); 
pageParameters.add("username", "fixedValue"); 

// Retrieving PageParameters 
String newValue = parameters.getValues("username").get(1).toString(); 
// here newValue will contain "fixedValue" (the second element) 
Смежные вопросы