Условная проверка бина Java - PullRequest
0 голосов
/ 28 августа 2018

У меня есть класс с двумя атрибутами. Я хочу использовать Java Bean Validation, но столкнулся с одной проблемой - как подойти?

class ProductRequest {

   private String quantityType;
   private double quantityValue;

   //getters and setters
}

Я хочу использовать Java Bean Validation, основываясь на следующих условиях. Если «amountType» равно «foo», ограничьте «amountValue» максимальным размером 5 в противном случае «amountType» равно «bar», ограничьте «amountValue» максимальным размером 3.

Каким будет наилучший подход к этому сценарию?

1 Ответ

0 голосов
/ 28 августа 2018
import javax.validation.constraints.AssertTrue;


@AssertTrue
public boolean isBothFieldsValid() {
    if (quantityType.equals("foo")) {
        return quantityValue < 5;
    } else if (quantityType.equals("bar")) {
        return quantityValue < 3;
    }
    return false;
}

EDIT:

Решение вопроса из комментария. Вы можете попробовать использовать два метода одновременно:

@AssertTrue(message = "quantity should be below 5 for foo")
public boolean isQuantityValidForFoo() {
    if (quantityType.equals("foo")) {
        return quantityValue < 5;
    }
    return true;
}

@AssertTrue(message = "quantity should be below 3 for bar")
public boolean isQuantityValidForBar() {
    if (quantityType.equals("bar")) {
        return quantityValue < 3;
    }
    return true;
}
...