我已经为我的JSP表单实现了自定义验证,当出现错误时,返回表单并将我的错误绑定到BindingResult。我的表格如下:
<form:form name="createCustomer" action="/practicemvc/customers/create/" method="POST" modelAttribute="customerBean">
<form:errors />
<label for="customerName">Name</label>
<input type="text" name="name" id="customerName" value="${customerBean.name}" />
<form:errors path="name" />
错误通过以下方式显示:
<form:errors />
但是,它们并没有通过以下方式显示:
<form:errors path="name" />
我的错误合并到BindingResult:
for(ErrorType errorType: validationResult.getErrors()) {
bindingResult.addError(new ObjectError(errorType.getProperty(),
new String[]{errorType.getErrorCode()}, null, null));
}
getProperty()将返回“name”,getErrorCode()将返回“INVALID_EMAIL”。 “INVALID_EMAIL”通过我的messageSource bean转换为“您的电子邮件无效”。如果我查看我的BindingResult中的错误内容,一切似乎都没问题,但它们没有按照我的JSP中的预期输出。有什么想法吗?
谢谢,B
答案 0 :(得分:3)
据我记忆,要将错误消息与字段相关联,您需要FieldError
,其中objectName
为customerBean
,field
为字段名称。
答案 1 :(得分:0)
似乎我可以通过以下方式使用它,但似乎并不是很好。
for(ErrorType errorType: validationResult.getErrors()) {
fieldErrorCodes = new String[]{
errorType.getErrorCode()
};
bindingResult.addError(new ObjectError(errorType.getProperty(), fieldErrorCodes , null, null));
if(errorType.getProperty().length() > 0) {
bindingResult.addError(new FieldError(bindingResult.getObjectName(), errorType.getProperty(), null,
false, fieldErrorCodes, null, null));
}
}