Java 验证器的目标无效-Spring MVC
我在春季验证时遇到问题。打开表单后出现以下错误:Java 验证器的目标无效-Spring MVC,java,spring,validation,spring-mvc,Java,Spring,Validation,Spring Mvc,我在春季验证时遇到问题。打开表单后出现以下错误: java.lang.IllegalStateException: Invalid target for Validator [com.example.validator.UserValidator@6ac0a8f4]: com.example.web.forms.UserDTO@4d3b2379 目前,我的验证器想先检查是否有任何功能: @Component public class UserValidator implements Valid
java.lang.IllegalStateException: Invalid target for Validator [com.example.validator.UserValidator@6ac0a8f4]: com.example.web.forms.UserDTO@4d3b2379
目前,我的验证器想先检查是否有任何功能:
@Component
public class UserValidator implements Validator {
@Autowired
ServiceUser serviceUser;
@Override
public boolean supports(Class<?> clazz) {
return User.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
User user = (User) target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "NotEmpty.userForm.name");
}
}
jsp中的表单:
<form:form action="dodaj" method="POST" modelAttribute="userDto">
<table border="1">
<tbody>
<tr>
<th>Imię</th>
<td>
<form:input type="text" path="name" />
<c:if test="${pageContext.request.method=='POST'}"><form:errors path="name" /></c:if>
</td>
</tr>
<tr>
<th>Nazwisko</th>
<td>
<form:input type="text" path="surname" />
<c:if test="${pageContext.request.method=='POST'}"><form:errors path="surname" /></c:if>
</td>
</tr>
<tr>
<th>DataUrodzenia</th>
<td>
<form:input type="date" path="dateOfBirth" />
<c:if test="${pageContext.request.method=='POST'}"><form:errors path="dateOfBirth" /></c:if>
</td>
</tr>
<tr>
<th>NumerIndeksu</th>
<td>
<form:input type="number" path="indexNumber" />
<c:if test="${pageContext.request.method=='POST'}"><form:errors path="indexNumber" /></c:if>
</td>
</tr>
<tr>
<th>Email</th>
<td>
<form:input type="text" path="email" />
<c:if test="${pageContext.request.method=='POST'}"><form:errors path="email" /></c:if>
</td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" value="Dodaj!" /></td>
</tr>
</tbody>
</table>
</form:form>
伊米ę
纳兹维斯科
达图罗季尼亚
数字索引
电子邮件
我尝试在@InitBinder旁边添加(“userDto”),但不幸的是,它没有起到任何作用。还没有找到更多适用的解决方案。如果还有什么我应该张贴在这里让我知道。我还可以提供一个指向存储库的链接,如果任何人都渴望尝试运行它。我认为您需要将
UserValidator
中的supports
方法更改为UserDTO
类:
public boolean supports(Class<?> clazz) {
return UserDTO.class.equals(clazz);
}
公共布尔支持(类clazz){
返回UserDTO.class.equals(clazz);
}
谢谢,将validate方法中的用户更改为userdt会有所帮助。Hovewer现在我在尝试提交无效表单-org.springframework.context.NoSuchMessageException后出现另一个错误:在区域设置“pl\u pl”的代码“NotEmpty.userForm.name.userDTO.name”下找不到消息。如何消除该错误或添加本地化消息?它正在使用keyNotEmpty.userForm.name.userDTO.name
查找显示该错误的文本。你在messages.properties文件中有吗?参考类似的答案,比如:我在validation.properties文件中有这样的答案。尝试重命名为messages.properties只是为了确定,但意识到我没有在任何地方配置消息,因此我目前正在处理该问题。我所做的只是通过一个巨大的解决方案启用注释,而不是仅仅添加
。我现在得到的是“可能不是空的”,因为我有@NotEmpty
注释,结果应该不同,因为在messages.properties中,我有NotEmpty.userForm.name.userDTO.name=name是必需的代码>编辑-我忘了取消注释binder.setValidator(userValidator)代码>,一切正常,非常感谢您的帮助。
public boolean supports(Class<?> clazz) {
return UserDTO.class.equals(clazz);
}