大家好,每当我尝试在Spring调用验证器时,我都会收到以下错误
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";
}
}
验证器
@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>
问题实际上出在验证器类中,您正在使用NewUserRegistration的对象,这是错误的,因为您要验证用户的对象而不是NewUserRegistration的对象。
@Override
public boolean supports(Class<?> classz)
{
return NewUserRegistration.class.equals(classz);
}
这应该是
@Override
public boolean supports(Class<?> classz)
{
return User.class.equals(classz);
}
当我试图运行一个测试时,我得到以下错误: org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为java.lang.IllegalStateException:验证器[userCreateFormValidator bean]的目标无效:com.ar.empresa.forms.UserCreateForm@15C3585
我为Money类编写了一个自定义Hibernate验证约束: 它工作正常,除了错误信息。我看到了非常奇怪的行为:找到了资源包,消息按名称解析,但它被包裹在特殊的字符中,如果消息不能按名称解析,通常会出现这些字符: 此处
问题内容: 我尝试用码头运行一个非常简单的RESTful apache- camel项目。我遵循了http://camel.apache.org/restlet.html中的说明。 我的应用程序将运行,但是我无法查看我的项目,因为每个功能都会从码头收到错误503。在Eclipse中,我可以在java.util.zip.Zipexecution中看到一些错误。(在下面发布),但是我没有使用该lib,
当我插入命令git push heroku master以便在eroku中部署时,会出现以下错误 下面是我的pom.xml 我找过类似的问题,但没有解决我的问题,我甚至在我的属性中添加了: 我正在按照本教程https://dashboard.heroku.com/apps/candidate-manager-api/deploy/heroku-git的步骤进行操作 我该怎么解决这个?
问题内容: 我正在尝试构建使用Java 8构建的应用程序,现在已升级到Java11。我在 Windows计算机中 使用oracle文章安装了Java 11 ,并使用 IntelliJ IDEA 2017 作为IDE。 我更改了系统环境变量并设置了 并将其添加到变量中。 当我在IntelliJ中构建应用程序时,这是我得到的: 到目前为止,这是我尝试过的: 我将目标值从8 更改为11,但这无济于事。同
我正在尝试构建一个使用Java8构建的应用程序,现在它已经升级到Java11了。我在windows机器中使用oracle文章安装了Java11,并且使用IntelliJ IDEA 2017作为我的IDE。 我更改了系统环境变量,并将 当我在IntelliJ中构建应用程序时,我得到的是: 这是我目前所尝试的: > 我将目标值从8更改为11,但这没有帮助。另外,在中验证了并且我的所有模块都设置为11。