本文共 2580 字,大约阅读时间需要 8 分钟。
(1)注解
@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.FIELD,ElementType.PARAMETER})@Constraint(validatedBy = FlagValidatorClass.class)public @interface FlagValidator { String[] value() default {}; String message() default "flag is not found"; Class [] groups() default {}; Class [] payload() default {};}
(2)校验
public class FlagValidatorClass implements ConstraintValidator{ private String[] values; @Override public void initialize(FlagValidator flagValidator) { this.values = flagValidator.value(); } @Override public boolean isValid(Integer value, ConstraintValidatorContext constraintValidatorContext) { boolean isValid = false; if(value==null){ //当状态为空时使用默认值 return true; } for(int i=0;i
(3)使用
@FlagValidator({"0","1"}) private Integer filterType;
@Configurationpublic class JacksonConfig { @Bean @Primary @ConditionalOnMissingBean(ObjectMapper.class) public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); // 通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化 // Include.Include.ALWAYS 默认 // Include.NON_DEFAULT 属性为默认值不序列化 // Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量 // Include.NON_NULL 属性为NULL 不序列化,就是为null的字段不参加序列化 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 字段保留,将null值转为""// objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer
利用反射机制 获取 对象属性
/** * 循环向上转型,获取对象的DeclaredField. * @throws NoSuchFieldException 如果没有该Field时抛出. */ @SuppressWarnings("rawtypes") public static Field getDeclaredField(Class clazz, String propertyName) throws NoSuchFieldException { for (Class superClass = clazz; superClass != Object.class; superClass = superClass.getSuperclass()) { try { return superClass.getDeclaredField(propertyName); } catch (NoSuchFieldException e) { // Field不在当前类定义,继续向上转型 } } throw new NoSuchFieldException("No such field: " + clazz.getName() + '.' + propertyName); }
转载地址:http://tlbii.baihongyu.com/