BeanUtils的拷贝功能

属性的拷贝,他其实是利用了反射的机制来做到的,只要这两个对象属性一样,类型一样,就自动的拷过去了

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {


//获取从页面表单中提交过来的值
UserActionForm uaf = (UserActionForm)form;

// //创建User实体对象,并将ActionForm中的内容设置到User对象中
// User user = new User();
// user.setUserId(uaf.getUserId());
// user.setUserName(uaf.getUserName());
// user.setPassword(uaf.getPassword());
// user.setEmail(uaf.getEmail());
// user.setContactTel(uaf.getContactTel());

// user.setCreateDate(new Date());


User user = new User();
BeanUtils.copyProperties(user, uaf);
user.setCreateDate(new Date());//这个为什么要再设置一下呢?因为是我们自己new 出来的一个Date

//调用业务逻辑操作
UserManager.getInstance().addUser(user);


return mapping.findForward("success");
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果源对象和目标对象的属性名称不同,并且属性类型也不同,可以使用BeanUtils.copyProperties(source, target, converter)方法,其中converter参数是一个自定义的属性转换器(Converter),用于实现不同属性名之间的属性拷贝。具体实现方法如下: 1. 定义一个源对象和目标对象,属性名称和类型不同: ```java public class Source { private String name; private int age; // getter和setter方法省略 } public class Target { private String username; private Integer userAge; // getter和setter方法省略 } ``` 2. 定义一个自定义的属性转换器: ```java public class CustomConverter implements Converter { @Override public Object convert(Class clazz, Object value) { if (clazz == String.class && value instanceof Integer) { return String.valueOf(value); } else if (clazz == Integer.class && value instanceof String) { return Integer.parseInt((String) value); } return value; } } ``` 上述自定义的属性转换器实现了将Integer类型转换成String类型,以及将String类型转换成Integer类型的功能。 3. 在使用BeanUtils.copyProperties()时,指定converter参数: ```java public static void main(String[] args) { Source source = new Source(); source.setName("Tom"); source.setAge(18); Target target = new Target(); BeanUtils.copyProperties(source, target, new CustomConverter()); System.out.println(target.getUsername()); // Tom System.out.println(target.getUserAge()); // 18 } ``` 在上述代码中,我们通过自定义的属性转换器实现了将源对象的"name"属性拷贝到目标对象的"username"属性中,并且将源对象的"age"属性拷贝到目标对象的"userAge"属性中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yjsuge

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值