我无法弄清楚如何将String转换为Grails应用程序内的BigDecimal。
我在做:
person.salary = params.number
但是我收到了一个错误。
*salary is a BigDecimal and params.number is always a string.
答案 0 :(得分:3)
我无法弄清楚如何将String转换为BigDecimal Grails应用程序。
BigDecimal
有一个String
构造函数,所以你能做的就是new BigDecimal(params.number)
。
您还有其他选择......
你可以params.number as BigDecimal
。
您可以使用其中一种类型转换便捷方法,例如params.double('number') as BigDecimal
,或者您可以提供类似params.double('number', 21.12) as BigDecimal)
的默认值。请注意,转换为double
时可能会失去精确度,因此如果这是一个问题,请不要这样做。
答案 1 :(得分:1)
你可以尝试
person.salary = params.number.toBigDecimal()
答案 2 :(得分:1)
如果您确实希望数字参数为BigDecimal,可以使用以下方法考虑绑定参数:
方法1:绑定为Controller Action的参数
您可以添加数字参数,而不是 params.number 访问:
def anyAction(double number){
...
person.salary = number
...
}
方法2:使用域对象进行数据绑定
创建域
class SomeClass {
BigDecimal number
}
控制器操作中的数据绑定
// will bind every parameters in params to an object dataBinding
def dataBinding = new SomeClass(params)
person.salary = dataBinding.number // it number are BigDecimal
可能还有其他方法,但我希望它可以提供帮助