1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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());这段代码。
登录后可查看更多问答,登录/注册