在 jdon 框架中使用日期类型时要注意的问题
在开发过程中,我发现有一个问题要注意:当我们在 ActionForm、model(模型)中使用了 java.util.Date 类来定义时间属性的时候,对这个属性的读写就会出错。我追查了很久,最后问题出在模型与 form 之间的熟悉拷贝过程中。我看了一下框架源码,在框架源码中,模型和 form 之间的属性传递是通过 apache 的一个公共组件中的类方法:PropertyUtils.copyProperties 来进行复制的。而这个方法有个需要注意的地方,那就是 java.util.Date 类的属性是不被支持互相复制的,而它的子类java.sql.Date是被支持的。因此如果对象包含时间类型的属性,且希望被转换的时候,一定要使用java.sql.Date类型。否则在转换时会提示argument mistype异常。我把我的程序中的日期由 java.util.Date 改为 java.sql.Date 后,就没有错误了。我查了一下其他的例子,发现其日期类型一般被转为 String 类型来存储,而在 jpetstore 中用到了 java.util.Date 类型的属性:private Date orderDate;,我还没空测试这个属性是否能够正常读写。不过我猜应该是不正常的。大家可以测试一下看看。