2012-02-22 43 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