使用javax.validation注释将空字符串转换为null

时间:2014-04-09 14:18:15

标签: java validation annotations

我有以下变量注释用于数据验证:

@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样板。有办法吗?

1 个答案:

答案 0 :(得分:1)

您可以实现自己的自定义约束验证器。

见这里。我已经多次使用它并且像魅力一样。

https://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html/validator-customconstraints.html

你只需要在isValid方法中设置这个条件(如果null返回“”或反之亦然)。