13

模型....

@Digits(integer=5, fraction=0, message="The value must be numeric and less than five digits")
private int value;

豆类文件....

<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: Unable to parse A

我看到一些帖子提到了 initBinding,但我不确定如何使用它,或者它是否会帮助我。这个问题之前应该已经解决了。有没有办法在绑定之前确保它是一个数字?

或者,如果有人可以发布正确的 messages.properties 条目来覆盖这个错误,那也对我有用。

我尝试了@Pattern,但这不适用于整数

4

1 回答 1

25

正如您所提到的,您需要在messages.properties. 您可以使用以下消息代码之一(具有不同级别的选择性):

  • typeMismatch.section.value
  • typeMismatch.value
  • typeMismatch.int
  • typeMismatch

此外,当您不知道消息代码时,您可以简单地打印BindingResult- 它toString()返回绑定错误的完整描述。

于 2010-11-03T00:10:32.637 回答