Commit 99684a63 by s_guodong

增加int和String的取值范围校验

parent a4309779
......@@ -203,6 +203,10 @@ public class ReflectUtil {
return aclass.isAssignableFrom(String.class)
|| aclass.isAssignableFrom(BigDecimal.class)
|| aclass.isAssignableFrom(Date.class)
|| aclass.isAssignableFrom(Integer.class)
|| aclass.isAssignableFrom(Double.class)
|| aclass.isAssignableFrom(Float.class)
|| aclass.isAssignableFrom(Long.class)
|| aclass.isPrimitive();
}
......
package com.ceb.gjjs.mda.util;
import com.brilliance.eibs.util.StringUtil;
import com.brilliance.mda.runtime.annotation.ListValue;
import com.brilliance.mda.runtime.annotation.Need;
import com.brilliance.mda.support.jakson.serialize.DecimalLength;
import org.apache.commons.lang3.StringUtils;
......@@ -10,6 +11,7 @@ import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
/**
......@@ -112,6 +114,21 @@ public class ValidatorUtil {
}
}
}
if (f.isAnnotationPresent(ListValue.class) && o != null) {
ListValue annotation = f.getAnnotation(ListValue.class);
int index = -1;
if (type.isAssignableFrom(String.class)) {
String[] valueList = annotation.strValue();
index = Arrays.binarySearch(valueList, o);
} else if (type.isAssignableFrom(Integer.TYPE) || type.isAssignableFrom(Integer.class)) {
Integer v = (Integer) o;
int[] valueList = annotation.value();
index = Arrays.binarySearch(valueList, v);
}
if (index < 0) {
return "参数校验错误[" + annotation.message() + "]";
}
}
}
return "";
}
......
package com.brilliance.mda.runtime.annotation;
import java.lang.annotation.*;
/**
* 取值范围
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ListValue {
int[] value() default {};
String[] strValue() default {};
String message() default "必须提交指定的值";
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment