Java-java报空指针异常

小组事务管理 小组事务管理 主题:974 回复:1955

Java-java报空指针异常

夜无邪 发布于 2017-07-03 字数 2715 浏览 994 回复 2
public String  updateMem(Member member){
try {
//根据id获取实体
Member persistent = memberdao.get(member.getId());

//email不为空
if(StringUtils.isNotEmpty(member.getEmail())){
if(this.isEmail(persistent.getEmail())){
persistent.setEmail(member.getEmail());
}else{
code="403";
}
}

//电话不为空
if(StringUtils.isNotEmpty(member.getMobile())){
if(this.isMobile(persistent.getMobile())){
persistent.setMobile(member.getMobile());
}else{
code="402";
}
}

//密码不为空时
if (StringUtils.isNotEmpty(member.getPassword())) {
String oldPassword = DigestUtils.md5Hex(member.getOldPassword());
if(oldPassword.equals(persistent.getPassword())){
String passwordMd5 = DigestUtils.md5Hex(member.getPassword());
persistent.setPassword(passwordMd5);
}else{
code = "408";
}
}

**//BeanUtils.copyProperties(member, persistent, new String[] {"id", "username", "isAccountEnabled", "isAccountLocked", "loginFailureCount", "lockedDate", "registerIp", "loginIp", "loginDate", "passwordRecoverKey"});**
memberdao.update(persistent);
memberdao.flush();
code="200";
} catch (Exception e) {
code="300";
e.printStackTrace();
}
return code;
}

我加这一句的时候就报空指针导常:
**//BeanUtils.copyProperties(member, persistent, new String[] {"id", "username", "isAccountEnabled", "isAccountLocked", "loginFailureCount", "lockedDate", "registerIp", "loginIp", "loginDate", "passwordRecoverKey"});**

测试操作test()方法
//更新开始
System.out.println("请输入原始密码:");
String oldPassword = scan.next();
System.out.println("请输入新密码:");
String newPassword = scan.next();
// System.out.println("请输入邮箱:");
// String email = scan.next();
// member.setEmail(email);
member.setOldPassword(oldPassword);
member.setId("4028eee4399010c601399010e1f60000");
member.setPassword(newPassword);
System.out.println(memberService.updateMem(member));

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(2

虐人心 2017-09-30 2 楼

Member 是普通javabean,有关联关系和集合引用吗?
从堆栈信息上看,是反射的错误。
下面是具体代码。

try {
Method readMethod = sourcePd.getReadMethod();
if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {
readMethod.setAccessible(true);
}
Object value = readMethod.invoke(source);
Method writeMethod = targetPd.getWriteMethod();
if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {
writeMethod.setAccessible(true);
}
writeMethod.invoke(target, value);
}
catch (Throwable ex) {
throw new FatalBeanException("Could not copy properties from source to target", ex);
}

偏爱自由 2017-08-24 1 楼

是有的java bean的属性不能复制,你看看loginDate,是java.util.Date,还是java.sql.Date。值拷贝的过程中对Date为空的情况处理有问题,你可以看一下源码。