使用spring mvc,重定向无法正常工作

时间:2017-01-20 07:36:54

标签: spring spring-mvc redirect login controller

重定向无法正常工作。我无法理解这个问题,因为我非常喜欢春天。

这是我的控制器,当我提交我的表单然后(“schoolform”)submitForm控制器被调用,它重定向到另一个控制器到('形式')表单控制器,但它转到(“登录”)登录控制器。我不知道为什么? 我想将schoolform重定向到表单控制器。

@RequestMapping(value = "/schoolform", method = RequestMethod.POST)
    public String submitForm(@ModelAttribute("school")School school,Model model,HttpServletRequest request,HttpServletResponse resp) {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        schoolService.update(school);
            System.out.println("Form submitted finaly, No further changes can be made.");
        return "redirect:/form.html";
    }


@RequestMapping(value = "/form", method = RequestMethod.GET)
    public String form(Model model,HttpServletRequest request) {
        HttpSession session = request.getSession(true);
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        String name = auth.getName(); // get logged in username
        System.out.println(name+"--------form page-----");

     }

@RequestMapping(value = "/login", method = RequestMethod.GET)
    public ModelAndView login(
            @RequestParam(value = "error", required = false) String error,
            @RequestParam(value = "logout", required = false) String logout) {
        logger.info("------------------LoginController ---------------");
        System.out.println("LoginController ");
        ModelAndView model = new ModelAndView();
        if (error != null) {
            model.addObject("error", "Invalid username and password!");
        }

        if (logout != null) {
            model.addObject("msg", "You've been logged out successfully.");

        }
        model.setViewName("login");
        return model;

    }

1 个答案:

答案 0 :(得分:0)

我认为它无效,因为您尝试重定向到网址的方法接受POST个请求。您无法从POST方法 UNLESS 重定向您有一个接受GET方法的处理程序方法,并且其@RequestMapping接受您尝试重定向的值。

基本上,仅接受POST请求的方法submitForm正试图重定向到/form.html。现在,您的控制器中没有接受/form.html的方法,所以现在您必须在控制器类中有一个方法,其映射值为/form.html并且它接受GET个请求:

@RequestMapping(value = "/form.html", method = RequestMethod.GET)
public String methodName(arg1 ..){ ... }