我是采用hibernate+struts的结构做应用。-Java技术
来源:WEB开发资源联盟(http://cnpoint.com/)
作者:point
原文:我是采用hibernate+struts的结构做应用。(http://cnpoint.com/framwwork/2006/1105/content_4550.htm)
我是采用hibernate+struts的结构做应用。
dto用于在表示层,业务发和数据层传输入数据的。在数据层我的dto属性的值要copy到vo中,再把vo传给hibernate进行持久化。
现在就是说数据的类型有些是不同的,但是名字是想同的。我的dto本来打算全部用string型。
但 是对于dto中如果是 String date,而vo中是java.sql.Date date ,那么如果dto 中date有正确的值,如"2005-11-2",他是可以转变过去的,但是如果他是空值,则不行,然后我在测试的时候修改dto中的date为 java.sql.Date,如果他是对的日期值,就是有值,它是对的,可是它为null时,则会报: org.apache.commons.beanutils.ConversionException: No value specified
at org.apache.commons.beanutils.converters.SqlDateConverter.convert(SqlDateConverter.java:103)
at org.apache.commons.beanutils.BeanUtilsBean.copyProperty(BeanUtilsBean.java:444)
at org.apache.commons.beanutils.BeanUtilsBean.copyProperties(BeanUtilsBean.java:261)
at org.apache.commons.beanutils.BeanUtils.copyProperties(BeanUtils.java:114)
at com.fireeagle.test.TestCopy.main(TestCopy.java:18)
No value specified 没有值被指定,但是按照业务来说,有些日期值是不要的,也就是就为空null,
那我要怎样解决这个问题,我不想回到set(get())那种形式了, 问题解决:
读了他的源程序,发现日期java.sql.date主要是用org.apache.commons.beanutils.converters.SqlDateConverter类进行转的:
修改下面的代码就可以了
public SqlDateConverter(Object defaultValue) {
this.defaultValue = defaultValue;
this.useDefault = true; //原本为false;
}
public SqlDateConverter() {
this.defaultValue = null;
this.useDefault = true; //原本为false; 我也不记是那个是false了,反正修改为true就可以了
}
进入问吧