繁体   English   中英

Grails g:select 不选择

[英]Grails g:select no selection

我有以下组合框:

<g:select name="ticketType" from="${app.domain.enums.TicketType?.values()}"
                              keys="${app.domain.enums.TicketType.values() }"
                              value="${ticketInstance?.ticketType}"
                              noSelection="${['null': 'Select One...']}"
                    />

我在命令对象中为 ticketType 设置了以下约束

ticketType nullable: true, blank:true

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' 文字? 例如noSelection="${['':'Select One...']}" 这可能会在数据绑定期间正确转换为真正的空值。

正如您的错误所说 - 您的noSelection确实有一个字符串。 这不能转换为您的任何枚举值。

删除null的引号,它应该可以工作(它适用于 grails 2.0):

<g:select name="ticketType" from="${app.domain.enums.TicketType?.values()}"
                          keys="${app.domain.enums.TicketType.values() }"
                          value="${ticketInstance?.ticketType}"
                          noSelection="${[null: 'Select One...']}"/>

在 Rails 3.3.x 下,提供“空”值没有任何变化。 最后,我通过在使用任何参数之前将这一行添加到控制器 + 操作中来解决它:

// convert "null" strings to REAL nulls
params.account.each { it.value = (it.value == 'null' ? null : it.value) }

之后,以下工作正常:

account.properties = params.account

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM