登录表单:@RequestMapping无法处理POST请求

时间:2016-03-22 16:27:19

标签: java spring spring-mvc spring-security

我是Spring的新手。

我尝试使用我放入UserForm类的注释来验证表单。

以某种方式post方法根本不运行。

我可以在浏览器中看到POST请求,但控制器POST方法不会运行。

这是我的LoginController班级:

@Controller
public class LoginController {

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(Map<String, Object> model) {
        UserForm loginUser = new UserForm();
        model.put("userForm", loginUser);

        return "Login";
    }

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String doLogin(
            @Valid @ModelAttribute("userForm") UserForm userForm,
            BindingResult result, 
            Map<String, Object> model) {

        if (result.hasErrors()) {
            return "Login";
        }

        return "Home";
    }
}

任何帮助指针都赞赏。

修改 这是我的表格:

<form:form action="/bookmarks/login" method="POST" commandName="userForm">
    <label for="idInput">Username:</label>
    <form:input type="text" path="username" placeholder="Username" />
    <div><form:errors path="username" cssClass="error"/></div>
    <br>
    <label for="idInput">Passwors:</label>
    <form:input type="password" path="password" placeholder="Password" />
    <div><form:errors path="password" cssClass="error"/></div>
    <br>
    <button type="submit" value="login">Submit</button>
</form:form>

这是添加了security.xml的{​​{1}}。这实际上解决了我的问题,但我无法完全解释原因:

login-processing-url="/j_spring_security_check"

1 个答案:

答案 0 :(得分:3)

我找到了解决问题的方法。我刚刚在security.xml中添加了login-processing-url="/j_spring_security_check"到form-login标签。现在POST请求是可以接受的。

编辑:

您好, 我有这个代码的另一个问题。 现在我通过POST请求并且已经进行了验证,但是当我尝试使用正确的用户名和用户登录时密码Spring将我重定向回登录表单。 (Spring 4.0.3.RELEASE)。