1

我在将请求参数绑定到域类中的 BigDecimal 字段时遇到了一些问题。

当我在持续时间字段中输入 25.75 时,数据被正确序列化,并且持续时间以正确的精度传递给请求中的控制器。

控制器动作:

def save() {
    // params.duration is 25.75 (debugged and printed to the console)
    def entry = new Entry(params)
    // entry.duration is now 25
    // the precision is lost..
    // 125.25 converts to 125
    // 1.75 converts to 1
    ...
}

领域类:

class Entry {
    BigDecimal duration

    static constraints = {
        duration(min: 0.01G, max: 168.00G, scale: 2)
    }
}

MySQL 数据库中的列类型为 DECIMAL(5,2)。

我错过了一些明显的东西吗?

编辑: 使用 Grails 2.2.0 版。

4

1 回答 1

2

您的语言环境/浏览器语言是什么?数字解析取决于语言环境。因此,如果您的语言环境的小数分隔符是“,”(逗号)而不是“。”,那么您将在数据绑定后获得整数(如您所述)。尝试将您的语言环境更改为“en”并再次检查。

于 2013-01-16T17:14:36.247 回答