Бобовая Проверка Java (JSR303) ограничения, включающие отношения между несколькими свойствами компонента

select round(123.456, 2, 1)
22
задан Hedenius Access 9 November 2009 в 10:46
поделиться

4 ответа

Я могу придумать несколько вещей, которые стоит попробовать.

Вы можете создать Ограничение с целью самого типа с соответствующим валидатором:

@ValidateDateRange(start="startDate", end="endDate")
public class MyBean {

Вы можете инкапсулировать диапазон дат в тип и убедитесь, что:

public class DateRange {    
  private long start;
  private long end;

  public void setStart(Date start) {
    this.start = start.getTime();
  }

  // etc.

Вы можете добавить простое свойство, выполняющее проверку:

public class MyBean {
  private Date startDate;
  private Date endDate;

  @AssertTrue public boolean isValidRange() {
    // TODO: null checks
    return endDate.compareTo(startDate) >= 0;
  }
30
ответ дан 29 November 2019 в 04:36
поделиться

Поскольку нет способа получить доступ к компоненту в валидаторе JSR 303, это невозможно.

Временным решением было бы предоставить свой собственный ConstraintValidatorContext и расширить это со ссылкой на bean-компонент, который вы в настоящее время проверяете. Но я не уверен, можно ли изменить / переопределить соответствующий завод.

-5
ответ дан 29 November 2019 в 04:36
поделиться

Ответ - валидатор уровня класса. Вы можете определить собственные ограничения, которые вы можете поместить в класс сущности. Во время проверки вы передаете весь экземпляр в метод isValid (). Затем вы можете сравнить свои две даты друг с другом. См. Также документацию по Hibernate Validator .

3
ответ дан 29 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: