当前位置: 首页 > 面试题库 >

绑定前的JSR-303类型检查

刘棋
2023-03-14
问题内容

模型....

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

beans file....

<mvc:annotation-driven />

controller....

@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);
     }

如何将“值”限制为仅数字?如果我输入的不是数字,则会出现此错误:

Failed to convert property value of type java.lang.String to required type java.lang.Integer for property value; nested exception is org.springframework.core.convert.ConversionFailedException: Unable to convert value “A” from type java.lang.String to type java.lang.Integer; nested exception is java.lang.IllegalArgumentException: Unable to parse A

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

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

我尝试了@Pattern但在int上不起作用


问题答案:

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

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

另外,当你不知道消息代码时,只需打印BindingResult-即可toString()返回绑定错误的完整说明。



 类似资料:
  • 我的bean中有两个字段 当字段key=“A”,“value”应该跟在其他“key”的特定Regex后面时,它可以是任何内容。 如何根据键定义此值验证。

  • 我试图让Kotlin在spring-data-rest项目上使用JSR303验证。 给定以下数据类声明: 提前感谢您的帮助!

  • 问题内容: JGoodies绑定和JSR 295(Beans绑定)之间的实际区别是什么?他们似乎都旨在达到相同的目的,并完成他们的工作(方法略有不同)。JGoodies Binding更成熟,但是JSR 295最终成为Java 7中JDK的一部分。 对于相同的功能,使用JDK的标准部分肯定比使用单独的库更好,但是还有其他因素需要考虑吗?还有其他选择吗?在这些选择之间进行选择是非常不可逆的体系结构决

  • 我使用Spring 3.2.2与Primeface 4.0和Hibernate 4.2。我在我的实体上有JSR303验证注释,并且我配置了Spring来在服务层验证它们——这很好。 但是我希望在调用服务之前启动JSF验证,但事实并非如此。我所做的所有研究都表明,我只需在类路径中添加一个验证程序,JSF2就会自动应用。 我已将建议的JAR添加到我的类路径中: 完整的依赖关系树可以在https://g

  • 我目前正在用Spring开发一个应用程序,使用Hibernate作为ORM。我知道,默认情况下,Hibernate在持久化或加载实体时都会使用JSR-303 Bean验证。由于此应用程序支持草稿(我希望在持久化后执行验证),因此必须将其添加到persistence.xml中: 模型实体代码: 我想知道如何传播bean验证,以便每当MyEntity实例被验证时,所有相关联的bar也被验证,而不必在验

  • JSR 303@Valid注释可用于验证控制器方法的输入对象,如Mkyong上所示。通用域名格式 是否可以使用@Valid annotation来验证int和long[]等基元类型?如果是,怎么做? 下面是一个Spring MVC方法签名示例,需要验证参数是否大于0: