我是 grails 的新手,所以我希望不要因为我的疏忽而让自己难堪,但是我已经两次尝试过这个问题,并且经历了 'inList' 从双打列表中验证的一贯失败。我查找了有关此问题的先前报告,并且可以找到一个。所以这里是:
我想使用 inList 约束根据可接受的双精度列表验证双精度类型的字段。脚手架生成的逻辑确实使用 ag:select 在网页上正确显示双精度列表。当我从下拉列表中选择任何有效的双精度时,域类中的“inList”验证会拒绝它们。例如,如果我从下拉列表中选择“2.0”,我会在网页上收到以下错误消息:
值为 [2] 的类 [class demo2.FloatsOkInList] 的属性 [aFloat] 不包含在列表 [[1.0, 2.0, 3.0, 4.0]] 中
好的,我可以看到 '2.0' 已被带回 '2',所以在往返过程中,我的提交可能已被格式化以显示或转换为整数或字符串。但是我的代码没有做这个转换。我的控制器是我没有修改过的纯模板。我的域代码是这样的:
class FloatsOkInList {
String aKey
Double aFloat
static constraints = {
aKey unique : true, blank : false
aFloat blank : false , inList :[ 1.0, 2.0, 3.0, 4.0]
}
}
该视图生成一个如下所示的字段:
<g:select name="aFloat" from="${floatsOkInListInstance.constraints.aFloat.inList}" required="" value="${fieldValue(bean: floatsOkInListInstance, field: 'aFloat')}" valueMessagePrefix="floatsOkInList.aFloat"/>
我认为期望“inList”根据双打列表进行验证并不是不合理的。
应用程序状态应用程序版本:0.1 Grails 版本:2.2.1 Groovy 版本:2.0.7 JVM 版本:1.7.0_01 重新加载活动:true 控制器:2 域:1 ...