使用枚举值和注释的Java验证字符串 [英] Java String validation using enum values and annotation
问题描述
我想验证对一组使用注释值的字符串。
我要的是基本上这
I want to validate a string against a set of values using annotation. What i want is basically this
@ValidateString(enumClass=com.co.enum)
String dataType;
int maxValue;
int minValue;
int precision;
或
@ValidateString(values={"String","Boolean", "Integer"})
String dataType;
int maxValue;
int minValue;
int precision;
我也想对视中的dataType设置的值其他变量一些验证,
I also want to do some validation on other variables depending upon the value set in dataType,
如果(的dataType =字符串)
包括maxValue,minValue(最小值),precision都应该为空或零。
if(dataType="String") maxValue, minValue, precision all should be null or zero.
我不能想办法通过自定义的注解来实现这个..
。
I can't think of a way to achieve this by custom annotations.. . .
有人请帮助我
推荐答案
感谢ü所有的善意回复的。
Thank u all for the kind reply's.
这就是我所做的。
注释
public @interface ValidateString {
String[] acceptedValues();
String message() default "{uk.dds.ideskos.validator.ValidateString.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
验证类
public class StringValidator implements ConstraintValidator<ValidateString, String>{
private List<String> valueList;
@Override
public void initialize(ValidateString constraintAnnotation) {
valueList = new ArrayList<String>();
for(String val : constraintAnnotation.acceptedValues()) {
valueList.add(val.toUpperCase());
}
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if(!valueList.contains(value.toUpperCase())) {
return false;
}
return true;
}
}
,我用它像
@ValidateString(acceptedValues={"Integer", "String"}, message="Invalid dataType")
String dataType;
Long maxValue;
Long minValue;
现在我需要弄清楚如何实施条件检查
IE浏览器。如果字符串则包括maxValue和minValue(最小值)为空或零。
Now I need to figure out how to implement conditional check ie. if String then maxValue and minValue should be null or Zero..
任何想法??
再次感谢..
这篇关于使用枚举值和注释的Java验证字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!