常见的BeanUtils.populate异常 解决方案

今天做文件的导出遇到了
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:816)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


异常,解决10几分钟得到的结果  笼统的来说就是 类型转换失败  String无法转换成Date类型  
解决方法有两种:
其一就是:
     ­老办法,就是将你的Date类型数据对象改成String类型就不会出现这个错误了,当然这是没办法的办法。
    本来今天我也想这么做了,(因为之前都是这么做的),但是想了想,在加上找资料,觉得应该还有比修改类型的方法更好的办法吧,所以就琢磨了琢磨,想出了第二个办法,闲话不多说,来看看第二个方法吧。

其二:
在你的ActionForm  或者重载set()方法,  及:
set****(String dateStr){
   SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); ----日期格式化样式
   Date date=sdf.parse(str,new ParsePosition(0));  ---将传进来的dateStr转换成 Date类型 
   this.****  = date;                   -----你声明的 Date类型属性   就可以了
}



如果没有 ActionForm 就修改JavaBean的同一方法  ,做法一样    

这样 传入Date类型和 String类型都不会报错了。。。。




当上传文件有<html:file> 时如果不定义表单为 enctype="multipart/form-data"   可能也会产生这个错误

你可能感兴趣的:(java,apache,struts,servlet)