manually replacing dots
звучит все ужасно и, возможно, неправильный подход.
Перемещенные сегменты ответа вокруг
Так обновление на ответ, так как я ударил подобный вопрос сегодня, возможно, в обратном направлении. Отправлено через номер 3333
, когда проверка не удалась по другой причине, после того, как валидация завершилась, число в поле стало 3,333
. Если старая проблема проверки исправлена, она теперь не будет выполнена из-за запятой в номере. Причина оказалась:
<g:textField value="${fieldValue(bean: instance, field: 'someField')}"
после возвращения изменили номер в 3,333 при изменении этого значения
value="${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
как положить. Так, может быть, это ваша проблема? Не уверен, так как вы говорите о точках
Я не думаю, что у вас есть я. У меня есть много полей в классе, которые являются числовыми, как double, так и BigDecimal, но все они печатаются с помощью точки. И когда я сохраняю форму, грабли не принимают точки, граалю нужны запятые. Итак, почему грайлы печатают двойники и bigdecimals с точками, когда они не принимают точки? Уверенно что-то не так внутри, ошибка, неправильная конфигурация или что-то еще.Ваше решение все равно даст мне точку, но мне все еще интересно, что вы думаете, что это решение будет для меня. – larand
вам нужно преобразовать Двойное число с точками в целое и сохранить, а затем конвертировать обратно с точками, то есть в bigDecimal для редактирования отображения, так что у вас есть двухсторонний процесс. http://stackoverflow.com/questions/4043579/converting-bigdecimal-to-integer. – Vahid
, вы можете, очевидно, полагаться на объект домена, чтобы магически преобразовать заданный тип в правильный тип. Если все это работает слишком сложно, как описано выше, вы можете создать свой собственный ручной процесс во время процесса сохранения, который преобразует пользовательский ввод с двойного на целочисленный или короткий, а затем сохраняет значение. то при отображении переконвертировать назад – Vahid