从在页面传过来的日期类型为String类型(用struts1 form封装),需要在action中转换为java.util.Date类型。
// Copy to business object from ActionForm,将actionForm中的属性赋值到实体类中; BeanUtils.copyProperties( dest, orig);
页面的日期是String型,ActionForm 用Date型,此时转换就会出问题。可参照以下方法处理:
UserForm的设计:
public class UserForm extends ActionForm { private String dateStr; public String getDateStr( ) { return dateStr; } public void setDateStr(String dateStr) { this.dateStr = dateStr; } }
User类:
import java.util.Date; import java.text.SimpleDateFormat; public class User { private Date date; public void setDateStr(String dateStr) {//在此处转换日期 this.date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr); } public Date getDate( ) { return date; } public void setDate(Date date) { this.date = date; } }
在日期转换时,BeanUtils.copyProperties ( dest, orig);方法会调用public void setDateStr(String dateStr)方法,从而实现了日期转换。
第二种方法:在actionForm中声明日期类型为java.sql.Date;即可解决所有问题,其他都不用改动;
(因为BeanUtil中没有设置对java.util.Date的转换,但对java.sql.Date进行了由字符串到Date的转换)