本文介紹了使用枚舉值和注解的 Java 字符串驗證的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我想使用注釋針對一組值驗證字符串.
I want to validate a string against a set of values using annotations.
我想要的基本上是這樣的:
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;
我還想根據(jù) dataType
中設(shè)置的值對其他變量進行一些驗證:
I also want to do some validation on other variables depending upon the value set in dataType
:
if (dataType = "String") {
// maxValue, minValue, precision all should be null or zero
}
我想不出通過自定義注釋來實現(xiàn)這一點的方法.
有人請幫幫我.
I can't think of a way to achieve this by custom annotations.
Somebody please help me.
推薦答案
這就是我所做的.
注釋
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) {
return valueList.contains(value.toUpperCase());
}
}
我用它喜歡
@ValidateString(acceptedValues={"Integer", "String"}, message="Invalid dataType")
String dataType;
Long maxValue;
Long minValue;
現(xiàn)在我需要弄清楚如何實現(xiàn)條件檢查IE.如果是字符串,那么 maxValue 和 minValue 應(yīng)該為 null 或零..
Now I need to figure out how to implement conditional check ie. if String then maxValue and minValue should be null or Zero..
有什么想法嗎?
這篇關(guān)于使用枚舉值和注解的 Java 字符串驗證的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!
【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!