JSR-303型检查之前检查
-
28-09-2019 - |
题
模型....
@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()
返回绑定错误的完整描述。
不隶属于 StackOverflow