>我有以下对象
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
public class SomeObject {
@Valid
@NotNull
private int someCount;
public int getSomeCount() {
return someCount;
}
public void setSomeCount(final int someCount) {
this.someCount = someCount;
}
public SomeObject(final int someCount) {
this.someCount = someCount;
}
}
但我得到
"someCount"被标记为"javax.validation.constraint.NotNull",但是 未在此构造函数中初始化。
它指向构造函数。我正在将一个项目传递到构造函数中。我该如何解决这个问题
您在这里有一个基元类型int
。它不能为空。相反,我建议您改用@Min(0)
验证器。如果您确实需要将 null 作为值传入,请改用包装器Integer
。为此,您可以进行如上所述的空检查。不过我不推荐这种方法。
"javax.validation.constraints.NotNull",但未在此构造函数中初始化
我们最近在声纳构建中遇到了这个问题。
为了解决此问题,我们在减速本身时初始化了非空字段。
请考虑以下代码。
public class Dummy {
@NotNull(message = "Dummy field cannot be null")
private Integer dummyField = -1; // Any default value
public Dummy(Integer dummyField) {
this.dummyField = dummyField;
}
public Integer getDummyField() {
return dummyField;
}
public void setDummyField(Integer dummyField) {
this.dummyField = dummyField;
}
}