...模型
@Digits(integer=5, fraction=0, message="The value must be numeric and less than five digits")
private int value;
beans file ....
<mvc:annotation-driven />
...控制器
@RequestMapping(value = "/admin/save.htm", method = { RequestMethod.POST })
public ModelAndView saveSection(@Valid @ModelAttribute Section section, BindingResult result) {
if(result.hasErrors()) {
return new ModelAndView("admin/editSection", "section", section);
}
如何将“价值”限制在数字范围内?如果我输入的不是数字,我会收到此错误:
无法转换属性值 输入java.lang.String到必需的类型 java.lang.Integer属性 值;嵌套异常是 org.springframework.core.convert.ConversionFailedException: 无法从类型转换值“A” 要键入的java.lang.String java.lang.Integer中;嵌套异常是 java.lang.IllegalArgumentException异常: 无法解析A
我看过一些提到initBinding的帖子,但我不确定如何使用它,或者它是否会帮助我。这必须在以前解决。有没有办法确保它在绑定之前是一个数字?
或者,如果有人可以发布正确的messages.properties条目来覆盖此错误,那么这对我也有用。
我试过@Pattern,但这不适用于ints
答案 0 :(得分:25)
正如您所提到的,您需要messages.properties
中的用户友好消息。您可以使用以下消息代码之一(具有不同的选择性级别):
typeMismatch.section.value
typeMismatch.value
typeMismatch.int
typeMismatch
此外,当您不知道消息代码时,您只需打印BindingResult
- 其toString()
将返回绑定错误的完整描述。