模型....

@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 for属性值;嵌套异常是org.springframework.core.convert.convert.conversionfailedexception:无法将“ A”转换为java.lang.string type java.lang.lang.integer;嵌套例外是Java.lang.IllegalArgumentException:无法解析

我已经看到一些帖子提到了启动,但我不确定如何使用它,或者是否会帮助我。这必须是以前解决的。有什么办法可以确保它是一个数字之前的数字?

或者,如果有人可以发布正确的消息。专业条目以覆盖此错误,这也可能对我有用。

我尝试了@pattern,但这对INT不起作用

有帮助吗?

解决方案

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top