我怎么不能用新的信息更新我的用户资料?

问题描述 投票:-1回答:2

我想更新我的用户资料,如果 String loginExist = nullloginExist.equals(principal.getName())

问题是我得到NullPointerException。

这是我的代码,我想更新我的用户配置文件,如果loginExist = null或loginExist.equals(principal.getName()),问题是我得到NullPointerException。

// update profile
@RequestMapping(value = "/updateRH", method = RequestMethod.POST)
public ModelAndView updateRH(Principal principal, @ModelAttribute("user") user user) {
    ModelAndView mv = new ModelAndView();
    String loginExist = "";
    user rh = RhRepo.findByUsername(principal.getName());
    try {
        loginExist = userRepo.findCountUsername(user.getUsername());
    } catch (Exception e) {

    }
    System.out.println(loginExist);

    if (loginExist.equals(null) || loginExist.equals(principal.getName())) {
        user.setId(RhRepo.findByUsername(principal.getName()).getId());
        user.setPwd(encoder.encode(user.getPwd()));
        RhRepo.save(user);
    } else {
        String msg = "Username Deja exist !!!";
        mv.addObject("msg", msg);
    }

    mv.addObject("rh", rh);
    mv.setViewName("rhprofile");
    return mv;
}
java spring spring-boot java-ee-6
2个回答
1
投票

loginExist.equals(null)会在loginExist为null时抛出NPE,因为你正试图从一个空对象中调用一个方法。

请使用:-

loginExist == null

而不是。


1
投票

所以问题是 user.getUsername()................................................................................................................................................................................................................................................ user 是空的,并试图获得其 username 导致NullPointerWxception。

在调用前添加一个检查,试试这个。

if (user != null) {
    loginExist = userRepo.findCountUsername(user.getUsername());
}

否则(如果它是空的), 你需要在试图从仓库中找到它之前创建用户.

© www.soinside.com 2019 - 2024. All rights reserved.