【问题标题】:Validate an empty Set with Bean Validation使用 Bean Validation 验证空 Set
【发布时间】:2016-03-15 20:54:39
【问题描述】:

我尝试对实体中的 Set 属性进行 bean 验证:

@NotEmpty
@Valid
private Set<E_CMS_CONDITION_ITEM> items;

我想在Set 为空时给我一个错误,现在没有给我一个错误。这可以通过 bean 验证实现吗?如果是怎么样?

更新 对于哈代: 我使用的是 primefaces 5.2 版本,这是我的 xhtml 代码:

<p:dataList id="conditionItemList" value="#{eventsController.model.currentCondition.items}" var="event" type="ordered" rowIndexVar="rowInd" label="#{msg['table.conditions.caption']}">
    .
    .
    .
</p:dataList>
<h:message for="conditionItemList" style="color:red" />

在同一个 xhtml 上的 bean 验证正在工作,只是这不是。没有写任何错误,我也尝试使用@NotNull,但还是一样。

【问题讨论】:

  • 您能否完善您的问题?在验证 null 或空集时,您应该会违反约束。你是说这不会发生在你身上。在这种情况下,您将需要分享更多上下文。
  • 我没有收到任何错误,我更新了我的问题。

标签: jakarta-ee set bean-validation is-empty


【解决方案1】:

您可以使用Hibernate Validator。它是Bean Validation 1.1 JSR-349的参考实现

您可以验证包含items 的实体。

  ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
  Validator validator = factory.getValidator();
  Set<ConstraintViolation<Foo>> constraintViolations =
      validator.validate( entity );

它将返回对实体的验证,包括items产生的违规行为

【讨论】:

  • 我不想为此写一个验证器,如果可能的话我想用 bean 验证来做。
  • 你不是在写任何验证器,你是在使用 Hibernate 提供的验证器,它是最新的 Bean Validation Specification 的参考实现。也许我误解了你的问题。你能更具体一点吗?可能是您想要进行验证的上下文。
  • 是的,但我需要编写一个 Validator.class 来放置 Hibernate 提供的验证器。我不想写任何Validator.class。如果可能的话,我会只从注释中进行验证。可能是因为我的英文有误会,抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多