当使用Spring框架并在commandName对象上绑定一个表单来添加时,让我们说一个具有以下字段的人。
save()
在服务器上我有以下代码
<form method="POST" action="addPerson.htm" commandName="person">
<input id="firstname" name="firstname"value="${person.firstname}"/>
<br>
<input id="name" name="name" value="${person.name}"/>
<br>
<input id="age" name="age" value="${person.age}"/>
</form>
如何使用此方法进行错误处理,例如,让我们说年龄必须是正数,并且名字可以留空。
答案 0 :(得分:1)
您需要创建一个新的Validator类,实现Validator
接口。
你的验证器可以是这样的:
public class PersonValidator implements Validator {
public boolean supports(Class<?> clazz) {
return Person.class.equals(clazz);
}
public void validate(Object target, Errors errors) {
Person person=(Person)target;
if ( person.getAge() < 0 ) {
errors.rejectValue("age", "age_positive");
// Or you can use this approach as well to parametrize the error message:
//errors.rejectValue("age", "age_positive", ArrayParametersIfNeeded, "DefaultMessage");
}
}
}
您还需要有一个error.properties文件来保存允许i18n的错误消息。 您可以在此处获得有关验证程序的所有必需信息:Validators
如果有,则需要在控制器中创建initBinder方法:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.addValidators(yourValidator);
}
然后,在控制器方法中,您可以传递此附加参数:BindingResult result
,如果需要,您将获得错误信息。
此外,您需要将此位添加到表单:
<form:errors path="age"/></c:set>
低于<input id="age" name="age" value="${person.age}"/>
我建议您更改<input>
代码的<form:input>
元素。