2012-02-22 117 views
4

我在我的枚舉定製toString方法:Grails如何將字符串轉換爲枚舉?

enum TaxRate implements Serializable { 
    RATE23(23.0), 
    ... 

    private String s 
    private BigDecimal rate 

    private TaxRate(BigDecimal s) { 
     this.s = s + "%" 
     this.rate = s * 0.01 
    } 

    public String toString() { 
     return s 
    } 

現在,當我在HTML顯示率我得到很好的輸出如稅收:23.0%。

但是,當用戶從<select>選擇稅和發送值即23.0%是Grails的不能創建/獲取TaxRate情況下會發生什麼......

我應該重寫以支持這個自定義映射?試圖覆蓋valueOf(String)以錯誤結束。

回答

6

您是否看到過bottom of this page的輸入?

如果你想使用一個枚舉在一個元素的「值」字符串屬性(一個很常見的成語),試試這個:

enum Rating { 
    G("G"),PG("PG"),PG13("PG-13"),R("R"),NC17("NC-17"),NR("Not Rated") 

    final String value 

    Rating(String value) { this.value = value } 

    String toString() { value } 
    String getKey() { name() } 
} 

然後加入optionKey="key"到您的標籤。

+0

這適用於我在一個ENUM上,但如果你有多個ENUMS,你想使用字符串值會發生什麼? – bitfidget 2015-01-08 23:49:33