2009-02-13 60 views
11

我使用Spring的HTML表單。其中一個字段是enum,因此我想要一個HTML下拉列表(<option>標記)。我的枚舉名稱與toString()值不同。例如:使用彈簧選項標籤來顯示枚舉的toString值

public enum Size { 
    SMALL("Small"), LARGE("Large"), VERY_LARGE("Very large"); 

    private final String displayName; 

    private Size(String displayName) { 
     this.displayName = displayName; 
    } 

    public String toString() { 
     return displayName; 
    } 
} 

我希望用戶看到toString()的值。通常這是通過使用Spring選項標籤的itemLabel來完成的。

<form:options items="${enumValues}" itemLabel="beanProperty" /> 

但是toString()不是一個bean屬性,因爲它不以「get」開頭。有沒有辦法設置itemLabel使用toString的值,而不必創建一個getter?

回答

6

我知道這是幾歲,現在必須解決,但認爲我會爲未來的角落添加解決方案。

只要刪除[itemLabel =「beanProperty」]部分。它將使用toString來打印值。

+4

永遠不會太晚:http://xkcd.com/979/ – 2012-05-14 19:09:03

2

爲什麼不將公共getDisplayName()方法添加到您的枚舉?

+0

我試圖避免將這個額外的方法添加到每個枚舉。它不能幫助枚舉不能被擴展。 – 2009-02-13 18:38:33

1

您是否嘗試過使用Spring的強大的AOP模型來擴展您的枚舉?看起來,取決於您擁有多少個枚舉,您可以輕鬆地將一個getDisplayName()方法添加到所有這些方法中,只需返回它們的toString()值即可。