开发者社区> 问答> 正文

使用thymeleaf使用Spring Boot将用户添加到Java中的数据库时出现问题

我正在使用本教程:带有tymeleaf的spring boot CRUD应用程序

当我尝试拥有一个用户时,出现了此错误:

2020-03-15 09:51:09.413 ERROR 10168 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

java.lang.NullPointerException:com.CRUD.CRUD_EXAMPLE.controller.UserController.addUser(UserController.java:33)〜[classes /:na]为null

这是代码:'''

 @Controller
public class UserController {
    private UserRepository userRepository;
    @GetMapping("/signup")
    public String showSignUpForm(User user) {
        return "add-user";
    }

    @PostMapping("/adduser")
    public String addUser(@Valid User user, BindingResult result, Model model) {
        if (result.hasErrors()) {
            return "add-user";
        } 


        userRepository.save(user);
        model.addAttribute("users", userRepository.findAll());
        return "index";
    }

    @GetMapping("/edit/{id}")
    public String showUpdateForm(@PathVariable("id") long id, Model model) {
        User user = userRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException("Invalid user Id:" + id));

        model.addAttribute("user", user);
        return "update-user";
    }
    @PostMapping("/update/{id}")
    public String updateUser(@PathVariable("id") long id, @Valid User user, 
            BindingResult result, Model model) {
        if (result.hasErrors()) {
            user.setId(id);
            return "update-user";
        }

        userRepository.save(user);
        model.addAttribute("users", userRepository.findAll());
        return "index";
    }

    @GetMapping("/delete/{id}")
    public String deleteUser(@PathVariable("id") long id, Model model) {
        User user = userRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException("Invalid user Id:" + id));
        userRepository.delete(user);
        model.addAttribute("users", userRepository.findAll());
        return "index";
    }
}

我的第33行是'userRepository.save(user)';

问题来源:Stack Overflow

展开
收起
montos 2020-03-24 17:43:33 691 0
1 条回答
写回答
取消 提交回答
  • 请使用注释标记您的UserRepository 实现类@Repository,如下所示:

    @Repository
    public class UserRepositoryImpl implements UserRepository {
    

    然后通过@Autowired注释在控制器中注入依赖项,如下所示:

    @Controller
    public class UserController {
    private UserRepository userRepository;
    
    @Autowired
    public UserController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    

    这将解决您的问题NullPointerException,因为Spring现在将为您创建并注入此依赖项。

    回答来源:Stack Overflow

    2020-03-24 17:44:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载