2012-07-02 32 views
1

我想通過使用簡單的登錄用例來實現Spring 3.0中的JSR 303 bean驗證。問題是如果我提交表單未經驗證是不會發生任何值(即BindingResult方法hasErrors()總返回「假」,並打印我冷靜以下是代碼片段:!@Valid(jsr 303)不能在Spring mvc 3.0中工作

@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"; 
    } 
} 

豆子看起來是這樣的:

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> 

我在想什麼

+1

只是想驗證 - 能否請您確認您如何配置Spring的MVC,我假設你已經使用''或您可能已經明確指定了HandlerAdapter - 如果您明確指定了handlerAdapter,那麼您可能還需要明確指定驗證器(JSR 303)。 –

+0

@BijuKunjummen是的,我已經使用進行了配置。我還有什麼要做的嗎? –

+1

是的,如果你使用mvc:註解驅動,你不需要做其他任何事情。你能否也請確認你的classpath中有一個JSR 303實現 - 比如說hibernate-validator jar文件? –

回答

3

在servlet上下文中添加<mvc:annotation-driven/> XML解決了我的問題。

0

你缺少形狀誤差tag.use像

<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> 

,你也必須保持與錯誤信息的屬性文件。

NotEmpty.logindetails.userName = userName is required! 
Range.logindetails.password= password value must be between 2 and 3 

例子: 點擊here

相關問題