我正在嘗試創建自定義jsf2組件以避免爲我的日期字段輸入轉換器和消息標記。我使用模板來完成Icefaces 1.x的工作。但是,在JSF 2中,我被迫使用複合組件;這並不如我所希望的那樣。Icefaces 2.0:冰問題:自定義組件中的selectInputDate
的複合元件已成功創建:
<composite:interface>
<composite:attribute name="style" />
<composite:attribute name="partialSubmit" />
<composite:attribute name="rendered" />
<composite:attribute name="immediate" />
<composite:attribute name="value" required="true" />
<composite:attribute name="pattern" required="true" />
</composite:interface>
<composite:implementation>
<ice:panelGroup rendered="#{cc.attrs.rendered}">
<ice:selectInputDate value="#{cc.attrs.value}"
style="#{cc.attrs.style}" id="input" renderAsPopup="true"
partialSubmit="#{cc.attrs.partialSubmit }"
immediate="#{cc.attrs.immediate }">
</ice:selectInputDate>
<ice:message for="input" style="color: red; display: block"></ice:message>
</ice:panelGroup>
</composite:implementation>
當屬性爲空時,該組件按預期運行然而,當我從我的數據庫加載數據,我得到一個java.sql.Date實例(儘管我的對象使用java.util.date的事實 - 前者擴展後者),我得到這個異常:
java.lang.IllegalArgumentException異常: 無法轉換03/03/11 20:00型 類java.util.Date中來 類java.sql.Date
是什麼奇怪的是,如果我使用ice:selectInputDate在我的複合組件之外,我沒有得到那個錯誤。有任何想法嗎?
只是好奇:你爲什麼被迫創建複合組件?這個決定是否來自更高層次,或者出於某種原因,您不能在IceFaces 2.0中使用模板嗎? – BalusC 2011-03-15 19:43:33
您可以使用模板。但是,當我使用帶輸入組件的舊模板時遇到了問題;我不斷收到重複的組件id異常。在浪費了一天的時間試圖讓它工作之後,我決定轉向新的方法。還有一天...... :) – Andre 2011-03-15 19:52:25
爲了確保我不在類路徑地獄附近或類似的地方,我在Tomcat 7中用IceFaces 2.0創建了一個測試項目。我使用java.util創建了一個bean .date字段併爲其分配一個java.sql.date實例。問題**可以被複制。看起來像一個bug ... – Andre 2011-03-15 22:12:06