【发布时间】:2014-03-01 10:51:37
【问题描述】:
大家好,每当我尝试在我的 spring 中调用验证器时,我都会收到以下错误
Servlet.service() for servlet spring threw exception: java.lang.IllegalStateException: Invalid target for Validator
请查看并帮助我解决此错误,以前我使用登录页面的验证,它工作正常,但现在无法正常工作。
这是我的代码 sn-p。
控制器
@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";
}
}
验证器
@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>
【问题讨论】:
-
你推荐
http://stackoverflow.com/questions/4715860/why-is-my-spring-3-validator-validating-everything-on-the-model -
或者这个
http://stackoverflow.com/questions/14533488/addiing-multiple-validators-using-initbinder -
您的验证器用于
NewUserRegistration类,您尝试验证User对象。不同的类型,因此不兼容,因此出现错误。 -
@M.Deinum:thanx 先生,你是天才,我发现我的错误,实际上在验证器中我使用的是 NewUserRegistration 对象而不是用户的对象,thanx 指出这个......
-
@hrishikesh:谢谢先生,但我在发布我的问题之前已经阅读了它们,我发现了我的愚蠢错误,无论如何,我非常感谢您花时间阅读并为我的问题提供建议。 :)
标签: spring runtime-error validation databinder