0

我在 Spring - MVC 中遇到表单验证问题。首先,我有这个 .jsp 页面,其中要求提交表单,询问用户名和密码。

请输入您的凭据以登录

<form:form method="POST" commandName="user" action="user/doLogin">
    <form:errors path="*" cssClass="errorblock" element="div" />
    <table>
        <tr>
            <td>User Name :</td>
            <td><form:input path="name" /></td>
            <td><form:errors path="name" cssClass="error" /></td>
        </tr>
        <tr>
            <td>User Password :</td>
            <td><form:password path="password" /></td>
            <td><form:errors path="password" cssClass="error" /></td>
        </tr>
        <tr>
            <td colspan="3"><input type="submit" /></td>
        </tr>
    </table>
</form:form>

此表单背后的控制器是 LoginController.java

@控制器

@RequestMapping("/user")
    public class LoginController { 

    @RequestMapping(value = "/doLogin")
    public String doLogin(@Valid User user, BindingResult result, ModelMap model) {


        if (result.hasErrors()) {
            return "user";
        } else {
            model.addAttribute("name", user.getName());

            return "Done";
        }


    @RequestMapping(method = RequestMethod.GET)
    public String displayUserForm(ModelMap model) {

        model.addAttribute("user", new User());
        return "user";

    }


    }

在我的模型包中,我有我使用的用户对象

org.hibernate.validator.constraints.NotEmpty;
org.hibernate.validator.constraints.Range;

用于验证目的。

验证工作完美,但问题是每当我在表单中输入错误的凭据并收到相应的消息时,下次提交凭据时,由于第二次调用提交按钮和 doLogin() 后的 URL 错误,我会收到 404 错误功能(用户/用户/doLogin)。我应该怎么做才能使其正常工作?在此先感谢您的任何信息 !:)

4

1 回答 1

0

使用modelAttribute="users"而不是commandName="user"

您也缺少第二个请求的值,如果未指定值,则无法调用此方法。

@RequestMapping(value="?" , method = RequestMethod.GET)
    public String displayUserForm(ModelMap model) {

        model.addAttribute("user", new User());
        return "user";

    }
于 2017-10-10T06:09:43.613 回答