Проблема с добавлением пользователя в базу данных в java с помощью весенней загрузки с thymeleaf - PullRequest
0 голосов
/ 15 марта 2020

Я использовал этот учебник: CRUD-приложение с весенней загрузкой и tymeleaf

Проблема возникает, когда я пытаюсь завести пользователя, у меня появляется эта ошибка:

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: null at com.CRUD.CRUD_EXAMPLE.controller.UserController.addUser (UserController. java: 33) ~ [классы /: нет]

Вот код: ' ''

    @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)';

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Пожалуйста, пометьте свой 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 теперь создаст и внедрит эту зависимость для вас.

0 голосов
/ 15 марта 2020

Как вам говорят, объект User пользователя, который приходит к методу, равен нулю, или одно из его полей равно нулю. Убедитесь, что этот объект содержит все данные, поступающие из вида. Также проверьте, правильно ли все поля в вашем файле html сопоставлены с полем объекта User.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...