Grails如何将String转换为Enum?

时间:2012-02-22 12:14:44

标签: grails groovy enums gorm

我的枚举中有一个自定义toString方法:

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中显示费率时,我得到了很好的输出,如TAX:23.0%。

但是,如果用户从<select>中选择税,而发送的值为23.0%,那么会发生什么?Grails无法创建/获取TaxRate实例...... < / p>

我应该覆盖什么来支持这种自定义映射?试图覆盖valueOf(String)以错误结束..

1 个答案:

答案 0 :(得分:6)

您是否在bottom of this page看到了该条目?

  

如果你想在一个元素中使用带有“value”字符串属性(一个很常见的习语)的枚举,试试这个:

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"添加到您的代码中。