我正在开发基于JSF技术的Web应用程序。我使用Eclipse作为IDE并使用Apache Derby作为数据库。
当获得用户输入时,我将其中一个字段作为日期字段,即出生日期。 但是当我更新数据库表时,我会收到错误报告。
Date Of Birth:
<h:inputText value="#{employeeBean.dob}">
<f:convertDateTime type="date" pattern="yyyy-mm-dd"/>
</h:inputText>
由于derby数据库以yyyy-mm-dd格式接受日期,我以相同的方式提供输入,并且也使用相同的格式。
这是我得到的错误。
Exception while setting value for expression : #{employeeBean.dob} of component with
path : {Component-Path : [Class:javax.faces.component.UIViewRoot,ViewId: /homepage.jsp]
[Class: javax.faces.component.html.HtmlForm,Id: j_id_jsp_996426310_1]
[Class: javax.faces.component.html.HtmlInputText,Id: j_id_jsp_996426310_6]}
Caused by:
java.lang.IllegalArgumentException - Cannot convert 1/8/87 5:39 AM of type class
java.util.Date to class java.sql.Date
有人帮助我。
答案 0 :(得分:3)
由于JSF使用java.util.Date
而德比可能期望java.sql.Date
,所以你必须做一些事情来代表这个差距:
java.util.Date
如果只做以上操作不起作用,请在保存之前进行转换。这可以使用以下构造函数完成(请注意,我不知道你将如何将对象持久化到数据库,所以我猜)
java.sql.Date date = new java.sql.Date(jsfProvidedDate.getTime());