[英]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.