grails - 在 GSP 页面上显示枚举值,然后将它们绑定(bind)到数据库中

标签 grails enums gsp

我有一个用例,我需要首先显示 enum 的值首先在 GSP 页面上作为下拉列表,让用户选择其中一个值,然后最后将数据绑定(bind)到域。

所以我在 GSP 上的代码看起来像我的枚举是 MyEnum

<g:select from="${MyEnum.getAllEnumList()}" optionValue="name" name="duration"/>

我的枚举是
public enum MyEnum {

    MIN15('15 Minutes'),
    MIN30('30 Minutes'),
    HOUR1('1 Hour'),
    HOUR2('2 Hours'),
    HOUR5('5 Hours'),
    HOUR8('8 Hours'),
    HALFDAY('half day'),
    FULLDAY('full day')

    private final String name
    private final String displayName

    public static final List<MyEnum> getAllEnumList() {
        [MIN15,MIN30,HOUR1,HOUR2,HOUR5,HOUR8,HALFDAY,FULLDAY]
    }

    public String toString() {
        return displayName
    }

    MyEnum(String name,String displayName) {
        this.name = name
        this.displayName = displayName;
    }

}

当我点击页面时,它显示如下错误:
Error processing GroovyPageView: Error executing tag <g:form>: Error evaluating expression [MyEnum.getAllEnumList()] on line [37]: java.lang.NoClassDefFoundError: Could not initialize class ENUM.MyEnum at D:/myspace/projects/IcepushpluginSampleApp/grails-app/views/util/test.gsp:46

有任何想法吗 ????

最佳答案

这就是我过去的做法。这样你就有了 i18n 支持。

普惠制

<g:select name="duration" from="${MyEnum.values()}" valueMessagePrefix="ENUM.MyEnum" />

消息属性
ENUM.MyEnum.MIN15=15 Minutes
ENUM.MyEnum.MIN30=30 Minutes
ENUM.MyEnum.HOUR1=1 Hour
ENUM.MyEnum.HOUR2=2 Hours
ENUM.MyEnum.HOUR5=5 Hours
ENUM.MyEnum.HOUR8=8 Hours
ENUM.MyEnum.HALFDAY=half day
ENUM.MyEnum.FULLDAY=full day

关于grails - 在 GSP 页面上显示枚举值,然后将它们绑定(bind)到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6872752/

相关文章:

grails - 用于单元测试中grails服务属性的NullPointerException

grails - Grails <g:actionSubmit>重定向到GSP而不是操作

angularjs - 如何在 Angular JS 中使用 Grails 消息代码标签

grails - Grails,从gsp更改域类属性

javascript - 分页后复选框不会保持选中状态

grails - 在grails中创建war文件时,为什么在 war 中jdbc驱动程序有时会丢失?

grails - 如何从groovy中的数组中获取常见对象

python - 当枚举类字段更改时引发 ValueError

c# - 位字段的 Enum.GetName()?

检查字符串是否是 C 中的有效枚举