Java Bean 条件验证
Java Bean Conditional Validation
我有一个 class 有两个属性。我想使用 Java Bean Validation 但 运行 有一个关于如何处理的问题?
class ProductRequest {
private String quantityType;
private double quantityValue;
//getters and setters
}
我想根据以下条件使用 Java Bean 验证。
如果 "quantityType" 等于 "foo",则将 "quantityValue" 限制为最大大小 5
否则 "quantityType" 等于 "bar",将 "quantityValue" 限制为最大大小 3.
在这种情况下,最好的处理方法是什么?
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;
}
我有一个 class 有两个属性。我想使用 Java Bean Validation 但 运行 有一个关于如何处理的问题?
class ProductRequest {
private String quantityType;
private double quantityValue;
//getters and setters
}
我想根据以下条件使用 Java Bean 验证。 如果 "quantityType" 等于 "foo",则将 "quantityValue" 限制为最大大小 5 否则 "quantityType" 等于 "bar",将 "quantityValue" 限制为最大大小 3.
在这种情况下,最好的处理方法是什么?
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;
}