前台枚举类型向后台传参如何转换

public enum StringShowType {
    
    /**
     * 标准文本框
     */
    STANDARD(0),
    
    /**
     * 密码框
     */
    PASSWORD(1),
    
    /**
     * 多行文本
     */
    TEXTAREA(2),
    
    /**
     * 富文本
     */
    RICHTEXT(3)
    ;

    private int code;

    private StringShowType(int code) {
        this.code = code;
    }

    public String toString() {
        return String.valueOf(code);
    }

    public int value() {
        return code;
    }

    public static StringShowType getEnum(int code) {
        for(StringShowType s:StringShowType.class.getEnumConstants()) {
            if(s.code == code) {
                return s;
            }
        }
        return null;
    }
    
}

上面这个java类是笔者常用的一种枚举类型实现的方式。如果后台有个实体属性值是上面的枚举类型,我们怎么让Spring自动进行枚举值的转换呢。

这里,我们需要用到Spring提供的Converter接口:

@Component
public class StringToStringShowTypeConverter implements Converter<String, StringShowType> {

    @Override
    public StringShowType convert(String source) {
        if(source==null) {
            return null;
        }
        String value = source.trim();
        if("".equals(value)) {
            return null;
        }
        return StringShowType.getEnum(Integer.parseInt(value));
    }

}

当我们将上面的java类注册为Spring组件后,Spring碰到StringShowType类型的属性,将自动调用上面的convert方法去尝试转换。

转载

 
posted @ 2021-05-26 09:28  皮军旗  阅读(1283)  评论(0编辑  收藏  举报