JavaBean条件验证
我有一个具有两个属性的类。我想使用JavaBean验证,但运行时遇到了一个问题:如何进行验证JavaBean条件验证,java,spring,javabeans,bean-validation,Java,Spring,Javabeans,Bean Validation,我有一个具有两个属性的类。我想使用JavaBean验证,但运行时遇到了一个问题:如何进行验证 class ProductRequest { private String quantityType; private double quantityValue; //getters and setters } 我想基于以下条件使用JavaBean验证。 如果“quantityType”等于“foo”,则将“quantityValue”的最大大小限制为5 否则“quantityT
class ProductRequest {
private String quantityType;
private double quantityValue;
//getters and setters
}
我想基于以下条件使用JavaBean验证。
如果“quantityType”等于“foo”,则将“quantityValue”的最大大小限制为5
否则“quantityType”等于“bar”,将“quantityValue”的最大大小限制为3
在这种情况下,最好的方法是什么?import javax.validation.constraints.AssertTrue;
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;
}
@资产真实
公共布尔值isBothFieldsValid(){
if(quantityType.equals(“foo”)){
返回数量值<5;
}else if(quantityType.equals(“bar”)){
返回数量值<3;
}
返回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;
}
@AssertTrue(message=“对于foo,数量应低于5”)
公共布尔值isQuantityValidForFoo(){
if(quantityType.equals(“foo”)){
返回数量值<5;
}
返回true;
}
@AssertTrue(message=“对于bar,数量应低于3”)
公共布尔值isQuantityValidForBar(){
if(quantityType.equals(“bar”)){
返回数量值<3;
}
返回true;
}
您需要一个自定义验证程序谢谢Jayesh的评论,我正在尝试在没有自定义验证的情况下实现。为了确保Krystian,我需要在同一个模型类上添加此方法,对吗?如何触发输入验证?是的,将其添加到ProductRequest类。我假设您已经在使用诸如“@NotNull”之类的验证注释,而这个注释的工作原理完全相同。它作为新字段@AssertTrue private boolean bothFieldsValid的getter代码>。谢谢,成功了!您有没有想过根据这些条件为@AssertTrue的false条件设置不同的消息?i、 e如果等于“foo”且数量>=5,@AssertTrue(message=“对于foo,数量应低于5”),如果等于“bar”且数量>=3,则@AssertTrue(message=“对于bar,数量应低于3”)?完美!这就是我一直在寻找的方式。谢谢,Krystian。