Java @有效(jsr 303)在Spring mvc 3.0中不工作

Java @有效(jsr 303)在Spring mvc 3.0中不工作,java,spring-mvc,bean-validation,Java,Spring Mvc,Bean Validation,我试图通过使用一个简单的登录用例在Spring3.0中实现JSR303bean验证。问题是,如果我提交的表单没有任何值,则不会进行验证(即BindingResult方法hasErrors()始终返回“false”并打印I'm cool!。以下是代码段: @Controller public class AnnotatedController { @RequestMapping(value = "login") public String validateLogin(@Valid

我试图通过使用一个简单的登录用例在Spring3.0中实现JSR303bean验证。问题是,如果我提交的表单没有任何值,则不会进行验证(即BindingResult方法hasErrors()始终返回“false”并打印I'm cool!。以下是代码段:

@Controller
public class AnnotatedController {
    @RequestMapping(value = "login")
    public String validateLogin(@Valid LoginForm loginForm, BindingResult result, HttpServletRequest request) {
        if(result.hasErrors())
            System.out.println("Got Errors !");
        else
            System.out.println("I'm cool !");
        return "login";
    }
}
该bean如下所示:

    public class LoginForm {
    @NotEmpty
    private String userName;
    @Size(min=2, max=3)
    private String password;

    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}
最后,有人认为:

<table>
    <form:form action="login.htm" modelAttribute="loginForm">
        <tr>
            <td>User :</td>
            <td><form:input path="userName" /></td>
        </tr>
        <tr>
            <td>Password :</td>
            <td><form:input path="password" /></td>
        </tr>
        <tr><td><input type="submit" value="Ok"> </tr>
    </form:form>
</table>

用户:
密码:

我缺少什么?

在servlet上下文XML中添加
为我解决了这个问题。

您缺少表单错误标记。使用like

<table>
<form:form action="login.htm" commandName="logindetails">
    <tr>
        <td>User :</td>
        <td><form:input path="userName" /></td>
        <td><form:errors path="userName" /></td>
    </tr>
    <tr>
        <td>Password :</td>
        <td><form:input path="password" /></td>
        <td><form:errors path="password"  /></td>
    </tr>
    <tr><td><input type="submit" value="Ok"> </tr>
</form:form>
例如:
单击

只是想验证-请确认您是如何配置Spring MVC的,我假设您已经使用了
,或者您可能已经明确指定了HandlerAdapter-如果您已经明确指定了HandlerAdapter,您可能需要指定验证器(JSR 303)也是显式的。@BijuKunjummen是的,我已经使用配置了它。这里还有什么我应该做的吗?是的,如果你使用的是mvc:annotation-driven,你不需要做任何其他事情。你能确认你的类路径中有JSR 303实现吗?比如说hibernate validator jar文件吗?@BijuKunjummen是的,我有hibernate-validator-4.3.0.Final.jar和validation-api-1.0.0.GA.jar出现在我的EclipseWeb应用程序库中。
NotEmpty.logindetails.userName = userName is required!
Range.logindetails.password= password value must be between 2 and 3