前台枚舉類型向后台傳參如何轉換


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

轉載

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM