- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有谁知道如何组件 <ice:selectInputDate>
被映射到 java.util.Calendar
字段,而不是java.util.Date
?
我正在使用IceFaces版本 1.8.2,组件 <ice:selectInputDate>
。该组件需要与 java.util.Date
绑定(bind)属性(property)。例如,value="#{bean.myDate}"
,myDate
字段的类型必须为 java.util.Date
。但我需要我的日期字段为 java.util.Calendar
类型.
我尝试使用标准转换器或自定义转换器:
<f:convertDateTime pattern="dd/MM/yyyy" />
它在 GUI 中格式化正确的值,但是在属性 bean.myDate
上设置它时类型 Calendar
我收到以下错误消息:[5/3/10 12:09:18:398 EEST] 00000021lifecycle I WARNING: FacesMessage(s)have been enqueued, but may not havebeen displayed.sourceId=j_id12:j_id189:myDate[severity=(ERROR 2),summary=(/WEB-INF/xhtml............file.xhtml @507,51 value="#{bean.myDate}": Can'tset property 'myDate' on class 'bean'to value '5/11/10 3:00 AM'.),detail=(/WEB-INF/xhtml........file.xhtml@507,51 value="#{bean.myDate}": Can'tset property 'myDate' on class'...bean...' to value '5/11/10 3:00AM'.)]
<f:converter converterId="c2d"/>
java.util.Calendar
已提交的对象 String
.Object
,并返回 String
已格式化。注意:此方法已被黑客攻击,因此不要期望 java.util.Calendar
,与 getAsObject
互补方法。相反,被黑的方法 getAsString
,预计 java.util.Date
,作为参数提供(由 ice:selectInputDate
)并返回 String
已格式化。
但仍然出现错误消息:
[5/3/10 12:55:34:299 EEST] 0000001fD2DFaceletVie Ecom.icesoft.faces.facelets.D2DFaceletViewHandlerrenderResponse Problem inrenderResponse:java.util.GregorianCalendarincompatible with java.util.Datejava.lang.ClassCastException: java.util.GregorianCalendarincompatible with java.util.Dateat com.icesoft.faces.component.selectinputdate.SelectInputDate.getTextToRender(SelectInputDate.java:252)
最佳答案
用另一个返回/获取日期
的getter/setter来包装Calendar
属性。
private Calendar calendar;
public Date getCalendarDate() {
return (calendar != null) ? calendar.getTime() : null;
}
public void setCalendarDate(Date date) {
if (calendar == null) {
calendar = Calendar.getInstance();
calendar.clear(); // Avoid timezone issues.
}
calendar.setTime(date);
}
一个JSF converter不起作用,因为这只能进行 Object
<-->String
转换,而我们需要一个 Object
<-->日期
在这里转换。我不做 IceFaces,但特定组件也有可能接受某种格式模式的日期字符串。您需要找出这一点,然后相应地编写 covnerter 以根据此字符串格式模式转换 Calendar
<-->String
。 java.text.SimpleDateFormat
对此很有帮助。
关于java - 如何映射 IceFaces <ice :selectInputDate> component on a java. util.Calendar 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2766287/
如何在 Icefaces 的 selectinputdate 弹出窗口中禁用过去的日子? 最佳答案 您应该能够使用 validator 或 valueChangeListener,如 2.0.2 T
有谁知道如何组件 被映射到 java.util.Calendar字段,而不是java.util.Date ? 我正在使用IceFaces版本 1.8.2,组件 。该组件需要与 java.util.D
我是一名优秀的程序员,十分优秀!