gpt4 book ai didi

grails - 如何在考虑当前用户区域设置的 Grails Controller 中解析 BigDecimal?

转载 作者:行者123 更新时间:2023-12-02 04:23:56 24 4
gpt4 key购买 nike

我想使用 BigDecimal 在 grails 2.0 应用程序中存储多个货币值。

我有一个带有 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 将发送到服务器。 Controller 解析如下所示:

invoiceInstance.properties = params

英语区域设置的 BigDecimal 金额 100.00 是 100 €,正如预期的那样

问题是,如果用户将区域设置更改为西类牙语并在字段中输入 100。字符串 100.00 被发送到服务器,但解析集总计为 10000,因为它理解西类牙数字的小数分隔符是 , 和 。是千位分隔符。

如何避免这个问题?

最佳答案

在解析值之前,您可能需要通过检查 Accept-Language header 来检查用户的区域设置。 。您可能会使用 header 引用的 Locale 中传递的值创建一个新的 BigDecimal,而不是天真地从参数构建。

关于grails - 如何在考虑当前用户区域设置的 Grails Controller 中解析 BigDecimal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9486630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com