Daniel Avoyan
Daniel Avoyan

Reputation: 53

Spring boot injection failure

I want to inject into the new object a class that contains the user.

    @GetMapping
    public String listTopic(Principal principal, Model model){


        Optional<Users> user = usersService.findByUsername(principal.getName());

        if (user.isPresent()){
            Topics topic = new Topics();
            topic.setUsers(user.get());

            model.addAttribute("newTopic", topic);
            model.addAttribute("topics", topicsService.listTopics());

            return "forum/forum";
        }

        return "/error";
    }

    @PostMapping
    public String addTopic(@Valid @ModelAttribute("newTopic") Topics topic, BindingResult bindingResult){

        if(bindingResult.hasErrors()){
            return "forum/forum";
        }
        topicsService.addTopic(topic);
        System.out.println(topic);
        return "redirect:/forum";
    }

When I pass sysout after setting user obect or adding attribute at getmapping section it shows me the exact object, but when I want to see it at the postmapping it throws nullpointerexception.

Upvotes: 0

Views: 130

Answers (1)

Panagiotis Bougioukos
Panagiotis Bougioukos

Reputation: 19108

Your model is a request scope object. After each request it is lost. You need to pass this information to a session object that is alive through different requests in the same session

https://stackoverflow.com/a/18795626/7237884

Upvotes: 1

Related Questions