2014-02-05 3 views
5

Привет всем Я получаю следующее сообщение об ошибке, когда я пытаюсь вызвать валидатор в моей веснеНедопустимая цель для проверки достоверности ошибки весной?

Servlet.service() for servlet spring threw exception: java.lang.IllegalStateException: Invalid target for Validator 

Пожалуйста, посмотри и помочь мне в этих ошибках, ранее я пользователь проверки на странице входа, и это отлично работает, но теперь он не работает.

Вот мой фрагмент кода.

Контроллер

@Controller 
public class NewUserRegistration 
{ 
    @Autowired 
    private UserService userService;  

    @Autowired 
    private NewUserValidator newUserValidator; 

    @InitBinder 
    public void initBinder(WebDataBinder binder) 
    { 
     binder.setValidator(newUserValidator); 
    } 

    @RequestMapping(value="/newUserAdd", method=RequestMethod.POST) 
    public String addUser(@ModelAttribute("user")@Valid User user,BindingResult result, Model model) 
    { 
      return "NewUser"; 
    } 

}

Validator

@Component 
public class NewUserValidator implements Validator 
{ 
    @Override 
    public boolean supports(Class<?> classz) 
    { 
     return NewUserRegistration.class.equals(classz); 
    } 

    @Override 
    public void validate(Object obj, Errors error) 
    { 
    //Validation login for fields 
    } 
} 

страница JSP

<form:form action="newUserAdd" method="POST" modelAttribute="user"> 
     <center> 
     <table> 
      <tr><td>User Id:</td><td><input name="userId" type="text" /></td><td><font color="red"><c:out value="${userIdError}" /></font> </td></tr> 
      <tr><td>Password:</td><td><input name="userPassword" type="password"/></td><td><font color="red"><c:out value="${userPasswordError}" /></font></td></tr> 
      <tr><td>Confirm Password:</td><td><input name="userConfirmPassword" type="password"/></td><td><font color="red"><c:out value="${userPasswordError}" /></font></td></tr> 
      <tr><td>Name:</td><td><input name="userName" type="text"/></td><td><font color="red"><c:out value="${userPasswordError}" /></font></td></tr> 
      <tr><td></td><td><input type="submit" value="Create"/></td></tr> 

     </table> 
     </center> 
    </form:form> 
+2

ли вы ссылаетесь 'http://stackoverflow.com/questions/4715860/why-is-my-spring-3-validator-validating-everything-on- the-model' – Hrishikesh

+0

Или это тоже 'http: // stackoverflow.com/ questions/14533488/addiing-multiple-validators-using-initbinder' – Hrishikesh

+1

Ваш валидатор предназначен для классов NewUserRegistration и вы пытаетесь проверить объект' User' , Различные типы, следовательно, несовместимые, следовательно, ошибка. –

ответ

14

Проблема на самом деле в классе Validator вы используете NewUserRegistration-х объект, который является неправильным, потому что вы хотите проверить свой объект пользователя, а не объект NewUserRegistration.

@Override 
    public boolean supports(Class<?> classz) 
    { 
     return NewUserRegistration.class.equals(classz); 
    } 

, который должен быть

@Override 
    public boolean supports(Class<?> classz) 
    { 
     return User.class.equals(classz); 
    } 
+0

какой должен использоваться в случае запроса? – fiddle

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