在edit.gsp中,我有十进制数字的输入字段,十进制数字显示为' 3.123'如果我保存它:我得到错误,因为小数点是错误的!它期待一个','。我的地方是瑞典。 所以我必须用逗号为所有十进制数字手动替换点。
我整整一周都环顾四周,无法在任何地方找到解决方案。 Grails是否应该保持一致,并且在保存中使用逗号时会显示逗号? 它应该适用于BigDecimal和double。
我有Grails 3.2.4
以下是" g:字段"的示例来自编辑表格:
Bredd: <g:field type="number decimal" name="width" min="20" max="300" required="Y" value="${request1?.width}" style="width: 4em"/>
那么,我该怎么办?
答案 0 :(得分:0)
manually replacing dots
听起来很恐怖,可能是错误的做法。
围绕
移动了答案片段因此我今天遇到类似问题的答案更新可能相反。由于其他原因验证失败时,通过大量3333
发送,验证失败后字段中的数字变为3,333
。如果修复了旧的验证问题,它现在将因数字中的逗号而失败。
结果原因是:
<g:textField value="${fieldValue(bean: instance, field: 'someField')}"
在将此更改为
时,将数字更改为3,333value="${instance.someField}"
以上是@larand面临的实际问题
我会将输入字段width
存储为短
所以:
Class MyClass {
//if you are storing a number like 123 (non decimal)
Short width
//if you are storing 12.12 which becomes 1212 when stored
Integer width
BigDecimal getDecimalWidth() {
return new BigDecimal(this.width).movePointRight(2).setScale(2)
}
void setWidth(BigDecimal decimal) {
this.width=new BigDecimal(decimal).movePointLeft(2).setScale(2)
}
//unsure but think this should work
Integer getWidthInteger() {
return this.width as int
}
void setWidth(Integer integer) {
this.width=(byte)integer
}
}
然后,这将为您提供使用${instance.decimalWidth}
或整数获取短值作为大小数的方法:${instance.widthInteger}
当您的字段为actually numeric时:
<g:formatNumber number="${myCurrencyAmount}" type="currency" currencyCode="EUR" />
对我而言,看起来比直截了当更清晰,而不是把你想到的数字砍掉了
首次验证后发出的号码为3333
。所以也许这是您的问题?因为你在谈论点而不确定