UserController.java
@RequestMapping(value = "update_information.do",method = RequestMethod.POST)
@ResponseBody
public ServerResponse<User> update_information(HttpSession session,User user){
User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
if(currentUser == null){
return ServerResponse.createByErrorMessage("用户未登录");
}
user.setId(currentUser.getId());
user.setUsername(currentUser.getUsername());
ServerResponse<User> response = iUserService.updateInformation(user);
if(response.isSuccess()){
response.getData().setUsername(currentUser.getUsername());
session.setAttribute(Const.CURRENT_USER,response.getData());
}
return response;
}
UserServiceImpl.java
public ServerResponse<User> updateInformation(User user){
//username是不能被更新的
//email也要进行一个校验,校验新的email是不是已经存在,并且存在的email如果相同的话,不能是我们当前的这个用户的.
int resultCount = userMapper.checkEmailByUserId(user.getEmail(),user.getId());
if(resultCount > 0){
return ServerResponse.createByErrorMessage("email已存在,请更换email再尝试更新");
}
User updateUser = new User();
updateUser.setId(user.getId());
updateUser.setEmail(user.getEmail());
updateUser.setPhone(user.getPhone());
updateUser.setQuestion(user.getQuestion());
updateUser.setAnswer(user.getAnswer());
int updateCount = userMapper.updateByPrimaryKeySelective(updateUser);
if(updateCount > 0){
return ServerResponse.createBySuccess("更新个人信息成功",updateUser);
}
return ServerResponse.createByErrorMessage("更新个人信息失败");
}老师,您在视频中的UserController.java中指定了user.setUsername(currentUser.getUsername());
而在UserServiceImpl.java代码中的updateUser中并未指定username,这样在测试update_information.do功能时更新完用户信息后会出现session中用户名为null的现象。
我觉得应该加上updateUser.setUsername(user.getUsername());这段代码。
登录后可查看更多问答,登录/注册