有谁知道如何将组件<ice:selectInputDate>映射到java.util.Calendar字段上,不是java.util.Date吗?
我使用的是IceFaces版本 1.8.2,组件<ice:selectInputDate>. 这个组件需要绑定一个java.util.Date属性。例如value="#{bean.myDate}",该myDate字段的类型必须为java.util.Date。但我需要我的日期字段是 type java.util.Calendar。
我的试验:我尝试使用标准转换器或自定义转换器:
标准一:
<f:convertDateTime pattern="dd/MM/yyyy" />它格式化正确的 GUI 中的值,但是在bean.myDate类型的属性上设置它时,Calendar我收到以下错误消息:[5/3/10 12:09:18:398 EEST] 00000021 生命周期 I 警告:FacesMessage 已入队,但可能尚未显示。sourceId=j_id12:j_id189:myDate[severity=(ERROR 2), summary=(/WEB-INF/xhtml............file.xhtml @507,51 value="#{bean. myDate}": 无法将类 'bean' 上的属性 'myDate' 设置为值 '5/11/10 3:00 AM'。),detail=(/WEB-INF/xhtml........ file.xhtml @507,51 value="#{bean.myDate}":无法将类 '...bean...' 上的属性 'myDate' 设置为值 '5/11/10 3:00 AM' .)]
定制一:
<f:converter converterId="c2d"/>- getAsObject -
java.util.Calendar从提交的对象中返回对象String。 - getAsString - 接收一个
Object,并返回String格式化的。
- getAsObject -
注意:这个方法被黑了所以而不是期望java.util.Calendar, 与getAsObject方法互补。相反,被破解的方法getAsString需要一个java.util.Date,作为参数(by ice:selectInputDate)提供并返回String格式化的。
但仍然出现错误消息:
[5/3/10 12:55:34:299 EEST] 0000001f D2DFaceletVie E com.icesoft.faces.facelets.D2DFaceletViewHandler renderResponse 渲染响应中的问题:java.util.GregorianCalendar 与 java.util.Date 不兼容 java.lang.ClassCastException: java.util.GregorianCalendar 与 com.icesoft.faces.component.selectinputdate.SelectInputDate.getTextToRender 的 java.util.Date 不兼容(SelectInputDate.java:252)
任何提示都非常有用!谢谢,米哈埃拉