我有一個使用Spring 3.0的JSF2應用程序。我有一個具有List<Double>
類型的屬性有5個元素一個bean:JSF輸入無法雙重轉換錯誤
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
;很明顯,字符串轉換嘗試也會失敗。現在,我預計至少所有成員都會被轉換器轉換並且是相同類型的。此外,我需要一種方式來正確獲取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技術,但據this文章而言,有不需要重寫任何東西。任何幫助將不勝感激
是的,的確有'convertedId'我得到它的工作。不幸的是,我被上面提供的url誤導了。感謝你及時的答覆。 –