Я хочу хранить несколько денежных значений в приложении 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, потому что она понимает десятичный разделитель для испанского числа, и. это разделитель тысяч.
Как мне избежать этой проблемы?