【问题标题】:How does Grails convert String to Enum?Grails 如何将 String 转换为 Enum?
【发布时间】:2012-02-22 12:14:44
【问题描述】:

我的枚举中有一个自定义的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 实例...

我应该覆盖什么来支持这种自定义映射?尝试覆盖 valueOf(String) 时出现错误..

【问题讨论】:

    标签: grails groovy enums grails-orm


    【解决方案1】:

    你看到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" 添加到您的标签中。

    【讨论】:

    • 这对我来说适用于一个 ENUM,但是如果您有多个 ENUMS 想要使用字符串值会怎样?
    猜你喜欢
    • 2011-07-18
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多