Я хочу сохранить несколько денежных значений в приложении Grails 2.0, используя BigDecimal.
У меня есть класс домена с полем BigDecimal
Invoice {
BigDecimal amount
}
Поле формы ввода GSP выглядит как следующий фрагмент кода
<div class="fieldcontain ${hasErrors(bean: invoiceInstance, field: 'amount', 'error')} required">
<label for="amount">
<g:message code="invoiceInstance.amount.label" default="Amount" />
<span class="required-indicator">*</span>
</label>
<g:field type="number" name="amount" required="" value="${invoiceInstance.amount}"/>
</div>
Если я работаю в английской локали, все работает нормально. Пользователь вводит 100 в поле, и при отправке значения 100,00 отправляется на сервер. Разбор контроллера выглядит так:
invoiceInstance.properties = params
и сумма BigDecimal 100,00 для английской локали составляет 100 €, как и ожидалось.
Проблема в том, что если пользователь изменит язык на испанский и введет 100 в поле. Строка 100.00 отправляется на сервер, но наборы для синтаксического анализа составляют 10000, поскольку он понимает, что десятичный разделитель для испанского числа равен , и . разделитель тысяч.
Как я могу избежать этой проблемы?