grailsg:选择无选择

grailsg:选择无选择,grails,enums,gsp,Grails,Enums,Gsp,我有以下组合框: <g:select name="ticketType" from="${app.domain.enums.TicketType?.values()}" keys="${app.domain.enums.TicketType.values() }" value="${ticketInstance?.ticketType}"

我有以下组合框:

<g:select name="ticketType" from="${app.domain.enums.TicketType?.values()}"
                              keys="${app.domain.enums.TicketType.values() }"
                              value="${ticketInstance?.ticketType}"
                              noSelection="${['null': 'Select One...']}"
                    />
TicketType是一个非常简单的枚举:

    public enum TicketType {
        QUESTION, SUPPORT, MAINTENANCE, NEW_FUNCTIONALITY, MALFUNCTION
}
每次我没有在GSP中为ticketType设置一些值时,我都会出现以下错误:

Failed to convert property value of type 'java.lang.String' to required type 'com.coming.enums.TicketPriority'
这就像在没有选择的情况下g:select设置“null”(字符串)的值


我遗漏了什么?

正如您的错误所述-您的
noSelection
中确实有一个字符串。无法将其转换为任何枚举值

删除您的
null
的引号,它应该可以工作(它适用于Grails2.0):



您是否尝试过使用空字符串作为noSelection属性,而不是使用“null”文本?e、 g.
noSelection=“${['':'Select One…']}”
?这可以在数据绑定期间正确地转换为真正的空值。

在Rails 3.3.x中,提供“空”值的任何变化都不起作用。最后,在使用参数之前,我将这一行添加到controller+操作中,从而解决了这个问题:

// convert "null" strings to REAL nulls
params.account.each { it.value = (it.value == 'null' ? null : it.value) }
在那之后,以下措施很好地发挥了作用:

account.properties = params.account

请显示您的
g:select
…@aiolos的代码抱歉-格式有一些错误。我已经编辑了我的帖子。我已经试过了,但仍然不起作用。还有其他想法吗?g:select最终生成HTML,因此它不会对null周围的引用产生任何影响,因为它将生成value=“null”……这是我通常的做法,但它不起作用。所以我选择了不同的选择。同时,我已经更改了控制器和服务中的一些代码,并将noSelection返回到noSelection=“${['':'Select One…']}”,现在它可以工作了。小精灵:)
// convert "null" strings to REAL nulls
params.account.each { it.value = (it.value == 'null' ? null : it.value) }
account.properties = params.account