我有以下变量注释用于数据验证:
@Size(min=8, max=16, message="the size of the parameter must be between 8 and 16")
private String param;
但是,param
可以为空。只要它不为空,它必须是8-16个字符长。我面临的问题是,如果客户端应用程序(JSON API)提供一个空字符串,我想将它视为完全没有提供,即为null。我想知道是否有一种优雅的方法来使用javax.validation
annotations
,即将空字符串转换为null,而不是简单的Java方式我正确地做到这一点的方式现在:
public void setParameter(String _param) {
if(_param != null && !_param.trim().isEmpty()){
this.param = _param;
} else {
this.param = null;
}
}
我想要一个非常简单的二传手:
public void setParameter(String _param) {
this.param = _param;
}
并通过注释完成is-empty-string样板。有办法吗?
答案 0 :(得分:1)
您可以实现自己的自定义约束验证器。
见这里。我已经多次使用它并且像魅力一样。
https://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html/validator-customconstraints.html
你只需要在isValid方法中设置这个条件(如果null返回“”或反之亦然)。