【问题标题】:@Size annotation not trimming whitespace@Size 注释不修剪空白
【发布时间】:2017-01-03 16:16:53
【问题描述】:

我有一个实体 bean,它的字符串类型属性之一有一个 @Size 注释,如下所示:

@PSanityCheck
@Size(min = 8, max = 8, message = "validation.servicecode_length")
@NotEmptyData
@Column(name = "servicecode")
@Field
private String servicecode= "";

但是,如果我在开头键入一个包含空格的字符串,例如“1234567”,它将接受它作为由 8 个字符组成的输入。如何让它修剪掉空白?有注释吗? UI 是用 Vaadin 框架制作的。

【问题讨论】:

  • 验证器已完成验证。为什么不在之前修剪空格?
  • 在 Vaadin 中没有找到方法。
  • @Size 与 JPA API 无关。它是 Bean 验证 API

标签: java hibernate trim bean-validation entity-bean


【解决方案1】:

您可以将@Pattern 注释与正则表达式一起使用

【讨论】:

  • 但是,前导空格最终会出现在您的数据库中,这可能不是您想要的。
  • 有没有办法制作正则表达式来修剪前导空格?
  • 验证不是正确的方法。 @Size 和 @Pattern 之类的注释只会强制数据已经是正确的格式,如果不是,则会导致异常。在持久化之前检查和更改数据的最通用方法是在您的实体中实现一个带有@PrePersist 注解的方法,并在那里进行必要的更改。
  • 就我个人而言,我认为它更简洁,以确保没有格式错误的字符串到达​​您应用程序业务层中的实体 bean。
  • 我建议您将您的解决方案放在这里,作为对阅读此问题的任何人的评论。祝你有美好的一天!
猜你喜欢
  • 2018-08-26
  • 2017-03-16
  • 1970-01-01
  • 2014-11-23
  • 2010-11-14
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多