Java Bean条件验证

问题描述 投票:0回答:1

我有一个有两个属性的类。我想使用Java Bean Validation但是遇到了一个关于如何处理的问题?

class ProductRequest {

   private String quantityType;
   private double quantityValue;

   //getters and setters
}

我想基于以下条件使用Java Bean验证。如果“quantityType”等于“foo”,则将“quantityValue”限制为最大值5,否则“quantityType”等于“bar”,将“quantityValue”限制为最大值3。

在这种情况下,最好的方法是什么?

java spring javabeans bean-validation
1个回答
2
投票
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;
}

编辑:

通过评论解决问题。您可以尝试一次使用两种方法:

@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;
}
© www.soinside.com 2019 - 2024. All rights reserved.