简体   繁体   中英

redirect doesn't work in the Spring controller

Hhere is a registration field, after registration it should go to the menu page, but it goes to main

@Controller
@RequestMapping("/main")
public class SignInPageController {

    private UserDao userDao;
@Autowired
    public SignInPageController(UserDao userDao){this.userDao = userDao;}

@GetMapping("/menu")
    public String mainMenuPage(){
        return "main/menu";
    }
@GetMapping("/signup")
    public String signUpPage(Model model){
        model.addAttribute("newuser", new User());
        return "main/signup";
    }
@PostMapping("/signup")
    public String signUp(@RequestParam("name") String name,
                             @RequestParam("password") String password,
                             @RequestParam("email") String email,
                             @RequestParam("nativeLanguage") String nativeLanguage){
        User user = new User(name, password, email, nativeLanguage);
        userDao.signUpUser(user);
        return "redirect:/main/menu";
    }

can you tell me what the problem is?

It looks like you are missing the @Controller Spring annotation on your SignInPageController class.

So you should get something like this:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
// And your other imports...

@Controller
@RequestMapping("/main")
public class SignInPageController {

    private UserDao userDao;

    @Autowired
    public SignInPageController(UserDao userDao){this.userDao = userDao;}

    @GetMapping("/menu")
    public String mainMenuPage(){
        return "main/menu";
    }

    @GetMapping("/signup")
    public String signUpPage(Model model){
        model.addAttribute("newuser", new User());
        return "main/signup";
    }

    @PostMapping("/signup")
    public String signUp(@RequestParam("name") String name,
                             @RequestParam("password") String password,
                             @RequestParam("email") String email,
                             @RequestParam("nativeLanguage") String nativeLanguage){
        User user = new User(name, password, email, nativeLanguage);
        userDao.signUpUser(user);
        return "redirect:/main/menu";
    }
}

So as I was saying in the comments :

You should be returning a ModelAndView type from your controller's method, with a return such as :

return new ModelAndView("redirect:/main/menu", model);

As you mentionned you also encoutered an issue with a incorrect redirection, try to use defined CONSTANTS to avoid typos :)

If you're new to Spring, make sure to look into RedirectAttributes , adding flashAttributes , and check the documentation on Baeldung it is really complete.

Good luck !

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM