在 java POJO 中使用注解限制输入长度

Restrict input length using annotation in java POJO

我有一个 POJO class 如下所示,

    @XmlRootElement
    public class JsonReply {

@XmlElement(nillable = false)
String callResult;

@XmlElement(nillable=false)
String returnobj;

@NotNull
String callError;

public String getCallResult() {
    return callResult;
}

public void setCallResult(String callResult) {
    this.callResult = callResult;
}

public String getCallError() {
    return callError;
}

public void setCallError(String callError) {
    this.callError = callError;
}

为了避免出现空字符串,我使用了很多注释,例如 Lombok 的 @NotNull 和 javax.xml.bind.annotation.XmlRootElement 的@XmlElement(nillable=false)。我的问题是是否有任何其他方式或注释来限制 Integer 或 String 的长度,例如 min=5 和 max=10.

       @Size(max=10)
       @Max(5)
       Integer sampleint;

我正在使用 Jackson。如果 Jackson 本身有任何注释,比如 @JsonIgnoreProperties 那么很好。

谢谢!

Bean 验证

你可以考虑Bean Validation. It's annotations based and integrates with wide variety of frameworks. The reference implementation is Hibernate Validator.

以下是一些可能对您有用的要点:

有关详细信息,请查看 javax.validation.constraints 包。

Bean 验证和 Jersey 2.x

Jersey 2.x 中的 Bean 验证支持作为扩展模块提供,需要在您的 pom.xml 文件中明确提及(如果使用 Maven):

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-bean-validation</artifactId>
    <version>2.23.2</version>
</dependency>

如果您不使用 Maven,请确保在类路径中也具有所有传递依赖项(请参阅 jersey-bean-validation 工件)。此模块直接依赖于 Hibernate Validator,后者提供了 Bean Validation 规范的最常用实现。

在泽西岛,Bean Validation 模块是一个自动发现的功能,也就是说,它是您不需要显式注册的模块之一 Features (ValidationFeature) 在服务器上,因为当您将 jersey-bean-validation 模块添加到您的类路径时,它的功能会自动发现并注册。

有关详细信息,请查看 Jersey documentation about Bean Validation support