×
文章路径: Java

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

发表于1年前(Mar 17, 2017 8:36:16 PM)  阅读 739  评论 0

分类: Java

标签: 枚举 传参

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方法去尝试转换。

发表评论