2012-07-02 3 views
1

Я пытаюсь выполнить проверку компонентов JSR 303 в Spring 3.0 с помощью простого использования для использования. Проблема заключается в том, если я отправить форму без какого-либо значения проверка не происходит (т.е. метод hasErrors BindingResult() всегда возвращаются «ложь» и печать я крут Ниже фрагмент кода:!.@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: annotation-driven, вам не нужно ничего делать. Не могли бы вы также подтвердить, что у вас есть реализация JSR 303 в вашем пути к классам - скажем, файлы jar для хранения hibernate-validator? –

ответ

3

Добавление <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

Смежные вопросы