如何使输入字段接受依赖于区域设置的数字格式?
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。
【讨论】:
但是,如果我需要在多个语言环境之间切换,您的解决方案是如何工作的?我的问题是,我不只有一种模式,但模式可以是“#,###.###”或“#.###,###”,具体取决于语言环境。 编辑了我的答案(添加了更多链接并删除了模式,这是一个不好的例子)。我想您应该阅读有关该注释和类的所有文档,如果它在您的应用程序中使用不同的语言环境,请尝试一下。查看格式是否符合您的预期。以上是关于如何使输入字段接受依赖于区域设置的数字格式?的主要内容,如果未能解决你的问题,请参考以下文章
如何使一个材料表列的编辑模式字段类型依赖于另一列的值,而不影响其他行?
如何使唯一数组的自定义验证规则依赖于其他字段 laravel
如何编辑BigQuery Connector for Excel .iqy文件以使其中已包含SQL语句而不是依赖于Excel单元格的输入?