前台枚举类型向后台传参如何转换
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方法去尝试转换。