使⽤BeanUtils把map转为bean时,使String类型转为到Date类
型
当bean中的变量类型没有⽇期类型(即java.sql.Date或者java.sql.Date),变量类型全为int或者String类型时,所有的bean都可以使⽤以下的通⽤⽅法,没有⼀点⽑病。
import flect.InvocationTargetException;
import java.sql.Date;
SimpleDateFormat;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apachemons.beanutils.BeanUtils;
dt_telecom.bean.User;
public class WEBUtils{
/**
* 将map类型转换为bean
* @param request
* @param t
* @return
*/
public static <T> T paramToBean(HttpServletRequest request,T t) {
string转date的方法//通过request从服务器获取参数的map集合
Map<String, String[]> map = ParameterMap();
try {
//使⽤BeanUtils.populate 将map转为bean
BeanUtils.populate(t, map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return t;
}
但是,当bean⾥⾯有⽇期类型是,就会出现转换异常的错误,这个让我很难受,查了很多资料。终于到了⽅法,也就是我前⾯发的这篇帖⼦⾥⾯提到的⽅法。
但是上⾯帖⼦⾥⾯的⽅法只能将 map中的字符串类型转为 java.util.Date类型。
⽽oracle数据库中的Date为java.sql.Date,因为Bean 中的类型也为java.sql.Date类型
⽤以上⽅法将 String转为 java.sql.Date类型时,虽然不会报错,但是它会让该变量为null ,⽽且该变量后⾯的变量也都为null.
所有这个⽅法不⾏,
由于开发时间有限,我现在⽆法再去研究这些问题 ,于是⾃⼰想到了⼀个很⼟的解决⽅案。以下⽅案虽然有效,但是不够通⽤,会产⽣很多重复的代码
/**
* 将map转为user
* 思路:
* 1.将前端input 中有关⽇期的name都改为别名,即在原名前⾯加1,
* 所以该值在使⽤BeanUtils.populate(user, map) 转换时就会为null,不会出现问题
* 2. 再⽤Parameter获取未转换的⽇期类型,⽤SimpleDateFormat⼿动将string转为java.util.sql * 3.使⽤ new java.sql.Date(long)的⽅法,将java.util.Date转为ava.sql.Date⽅法
* 4.再使⽤BeanUtils.setProperty将其存进user中
*
* @param request
* @param user
* @return
*/
public static User paramToBean(HttpServletRequest request,User user) {
Map<String, String[]> map = ParameterMap();
String Parameter("birthday1");
String Parameter("hiredate1");
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
try {
BeanUtils.populate(user, map);
if(birthday1 != null && birthday1 !="") {
Date birthday =new Date(simpleDateFormat.parse(birthday1).getTime());
BeanUtils.setProperty(user, "birthday", birthday);
}
if(hiredate1 !=null && hiredate1 !="") {
Date hiredate =new Date(simpleDateFormat.parse(hiredate1).getTime());
BeanUtils.setProperty(user, "hiredate", hiredate);
}
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
}
各位⼤神如果有此问题的解决⽅案,请在⽂章下⾯留⾔。谢谢
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论