У меня есть приложение JSF2, которое использует Spring 3.0. У меня есть бин, который имеет свойство типа List<Double>
с 5 элементами:
public class MyBean {
private List<Double> values;
public List<Double> getValues() {
if (values == null) {
values = new ArrayList<Double>(5);
for (int i = 0; i < 5; i++) {
values.add(null);
}
}
return values;
}
public void setValues(List<Double> values) {
this.values = values;
}
}
В моем файле xhtml у меня есть это для каждого элемента:
<h:inputText id="value1" value="#{myBean.values[0]}">
<f:convertNumber pattern="#########0.##" />
</h:inputText>
Моя цель - получить значения как ArrayList
. Также я не хочу сохранять индивидуальные свойства для каждого участника. Будущее требование сделает общее число значения динамическим (не жестко запрограммированным 5), поэтому я могу использовать цикл для определения входных данных для каждого элемента, но сейчас не будем на этом фокусироваться.
Так вот в чем проблема. Когда я отправляю страницу, преобразование не является правильным. Например, если мой ввод был 1, 2.0, 3 (и 2 пустых ввода для двух последних элементов, они не являются обязательными), я получаю следующий массив [1, "2.0", 3, "", ""]] где 1 и 3 имеют тип BigDecimal
, а 2.0 и последние 2 члена являются пустыми строками. Это вызывает ClassCastexception
каждый раз, когда я пытаюсь получить член списка массивов, потому что по определению является универсальным, а универсальный тип - Double
. BigDecimal
нельзя привести к Double
; очевидно, что попытки приведения строки также не будут выполнены. Теперь я ожидал, что по крайней мере все члены будут преобразованы конвертером и будут одного типа. Кроме того, мне нужен способ, чтобы получить правильный как двойной. Я также попробовал следующее:
<h:inputText id="value1" value="#{myBean.values[0]}">
<f:converter id="javax.faces.Double" />
</h:inputText>
но это вызвало исключение:
<f:converter> Default behavior invoked of requiring a converter-id passed in the constructor, must override ConvertHandler(ConverterConfig)
Я должен признать, что я новичок в технологии JSF, но что касается этой статьи , не было необходимости что-либо переопределять. Любая помощь будет оценена