在 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.
以下是一些可能对您有用的要点:
对于 String
验证,您可能感兴趣的开箱即用注释是 @Size
.
对于数字验证,考虑@Min
, @Max
, @DecimalMin
, @DecimalMax
and @Digits
。
使用 @NotNull
不接受 null
值。
有关详细信息,请查看 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 模块是一个自动发现的功能,也就是说,它是您不需要显式注册的模块之一 Feature
s (ValidationFeature
) 在服务器上,因为当您将 jersey-bean-validation
模块添加到您的类路径时,它的功能会自动发现并注册。
有关详细信息,请查看 Jersey documentation about Bean Validation support。
我有一个 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.
以下是一些可能对您有用的要点:
对于
String
验证,您可能感兴趣的开箱即用注释是@Size
.对于数字验证,考虑
@Min
,@Max
,@DecimalMin
,@DecimalMax
and@Digits
。使用
@NotNull
不接受null
值。
有关详细信息,请查看 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 模块是一个自动发现的功能,也就是说,它是您不需要显式注册的模块之一 Feature
s (ValidationFeature
) 在服务器上,因为当您将 jersey-bean-validation
模块添加到您的类路径时,它的功能会自动发现并注册。
有关详细信息,请查看 Jersey documentation about Bean Validation support。