Grails如何将String转换为Enum?

Que*_*ueg 4 grails groovy enums grails-orm

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
    }
Run Code Online (Sandbox Code Playgroud)

现在,当我以HTML显示费率时,我得到了很好的输出,如TAX:23.0%.

但是当用户从a中选择税<select>并且发送的值23.0%是因为Grails无法创建/获取TaxRate实例时会发生什么...

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

tim*_*tes 6

你看过这个页面底部的条目了吗?

如果你想在一个元素中使用带有"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() }
}
Run Code Online (Sandbox Code Playgroud)

然后添加optionKey="key"到您的标记.