У меня есть приложение JSF2, использующее Spring 3.0. У меня есть bean-компонент со свойством типа List
с 5 элементами:
public class MyBean {
private List values;
public List getValues() {
if (values == null) {
values = new ArrayList(5);
for (int i = 0; i < 5; i++) {
values.add(null);
}
}
return values;
}
public void setValues(List values) {
this.values = values;
}
}
В моем xhtml-файле у меня есть это для каждого элемента:
Моя цель - получить значения как ArrayList
. Кроме того, я не хочу сохранять индивидуальные свойства для каждого члена. В соответствии с будущими требованиями общее число значения будет динамическим (а не жестко запрограммированным 5), поэтому я могу использовать цикл для определения входных данных для каждого элемента, но не будем сейчас сосредоточиваться на этом.
Итак, вот в чем проблема.Когда я отправляю страницу, преобразование неверное. Например, если мой ввод был 1, 2.0, 3 (и 2 пустых ввода для последних двух элементов, они не являются обязательными), я получаю следующий массив [1, «2.0», 3, «», «»] , где 1 и 3 относятся к типу BigDecimal
, а 2.0 и последние 2 члена являются пустыми строками. Это вызывает ClassCastexception
каждый раз, когда я пытаюсь получить член списка массивов, потому что по определению является универсальным, а общий тип - Double
. BigDecimal
нельзя преобразовать в Double
; очевидно, что попытки приведения строки также потерпят неудачу. Теперь я ожидал, что по крайней мере все члены будут преобразованы конвертером и будут одного типа. Кроме того, мне нужен способ правильно получить двойное значение. Я также пробовал следующее:
, но это вызвало исключение:
Я должен признать, что я Я новичок в технологии JSF, но что касается этой статьи, не было необходимости что-либо переопределять. Любая помощь будет принята с благодарностью