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方法去嘗試轉換。
