如何使输入字段接受依赖于区域设置的数字格式?

Posted

技术标签:

【中文标题】如何使输入字段接受依赖于区域设置的数字格式?【英文标题】:How can I make input fields accept locale dependent number formatting? 【发布时间】:2012-07-10 10:26:00 【问题描述】:

我正在开发一个 Spring MVC 项目,遇到了表单国际化的问题,尤其是数字格式。

我已经使用 fmt:formatNumber 根据当前选择的语言环境来格式化数字。

<fmt:formatNumber value="$object[field]"/>

像这样,数字格式在我显示数字时效果很好。但是表格呢?

目前,应该接收浮点值的输入字段预填充 0.0 并希望我使用“。”作为小数点分隔符,无论选择什么语言环境。服务器拒绝包含“,”的值(...无法将 String 转换为所需的浮点类型...)。

如何使我的输入字段也使用并接受适当的数字格式?

【问题讨论】:

【参考方案1】:

你看过@NumberFormat吗?如果您注释输入字段绑定到的属性,这应该会导致正确的格式。比如:

@NumberFormat(style = Style.NUMBER)
private BigDecimal something;

这种风格是"general-purpose number format for the current locale"。我猜,当前的语言环境是从LocaleContextHolder 逐线程确定的。

您的应用需要为annotation-driven,另请参阅文档中的"Annotation-driven Formatting" 部分。

您可能想看看DecimalFormatSymbols 中的建议this answer。

【讨论】:

但是,如果我需要在多个语言环境之间切换,您的解决方案是如何工作的?我的问题是,我不只有一种模式,但模式可以是“#,###.###”或“#.###,###”,具体取决于语言环境。 编辑了我的答案(添加了更多链接并删除了模式,这是一个不好的例子)。我想您应该阅读有关该注释和类的所有文档,如果它在您的应用程序中使用不同的语言环境,请尝试一下。查看格式是否符合您的预期。

以上是关于如何使输入字段接受依赖于区域设置的数字格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何使一个材料表列的编辑模式字段类型依赖于另一列的值,而不影响其他行?

phpmyadmin - 如何设置依赖于外键的字段值?

如何使唯一数组的自定义验证规则依赖于其他字段 laravel

如何编辑BigQuery Connector for Excel .iqy文件以使其中已包含SQL语句而不是依赖于Excel单元格的输入?

如何使文本框只接受数字并用逗号格式化数字?

TypeScript 字段类型依赖于其他字段