【问题标题】:Where to find a NotNull java annotation在哪里可以找到 NotNull java 注释
【发布时间】:2015-01-25 21:43:53
【问题描述】:
我搜索了一个@NotNull java 注释,并找到了来自 javax 的注释。我尝试使用它,但遇到了相同的issues described here。简而言之:我需要设置一些东西来让它工作——但我实际上并不需要所有这些(我在普通的 Java/Groovy 上下文中,没有 JavaEE)。是否有上述注释的替代品可以独立工作,在哪里可以找到?
【问题讨论】:
标签:
java
groovy
null
annotations
【解决方案1】:
oval 可以帮助您。
从 http://mvnrepository.com/artifact/net.sf.oval/oval/1.31 下载 jar 并查看此处的文档 http://oval.sourceforge.net/
例如:
import net.sf.oval.constraint.MaxLength;
import net.sf.oval.constraint.NotEmpty;
import net.sf.oval.constraint.NotNull;
public class Request {
@NotNull
@NotEmpty
@MaxLength(value = 30)
private String id;
//.....getters setters......
}
上面将是你的pojo
/**
* Method returns if valid request or not
*/
private boolean isValid(Request request) {
List<ConstraintViolation> violations = validator.validate(request);
if (violations.size() > 0) {
return false;
} else {
return true;
}
}
并且会像上面那样进行验证。
您还可以在网上找到更多示例。
【解决方案2】:
您可以使用 groovy 很好地使用验证。有休眠验证器实现。例如
@Grapes([
@Grab('javax.validation:validation-api:1.1.0.Final'),
@Grab('org.glassfish:javax.el:3.0.0'),
@Grab('org.hibernate:hibernate-validator:5.1.3.Final'),
])
import javax.validation.*
import javax.validation.constraints.*
class Pogo {
@NotNull
String name
@NotNull
@Min(1L)
Long size
}
def validator = Validation.buildDefaultValidatorFactory().getValidator()
println validator.validate(new Pogo()).collect{ "Error on $it.propertyPath: $it.message" }
//; [Error on name: may not be null, Error on size: may not be null]
println validator.validate(new Pogo(name:"x", size:0)).collect{ "Error on $it.propertyPath: $it.message" }
//; [Error on size: must be greater than or equal to 1]