gpt4 book ai didi

java - 如何使用本地化小数点分隔符将小数值从 JSP 传递到 Action?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:00 25 4
gpt4 key购买 nike

在 JSP 中:

<input type = "number" 
name = "score"
min = "0"
max = "100"
maxlength = "3"
step = "0.01" />

在行动中:

@Getter @Setter private Float score; 

当值有小数位时(例如 56,78),在 Action 中我得到 5678.0

这是因为 Struts2 不知道在我国 ,十进制 分隔符,而不是千位 分隔符。

有没有办法指示 Struts2 使用特定 Locale 的小数分隔符,以便能够正确转换 float ?

最佳答案

When the value has decimal places (eg. 56,78), in the Action I get 5678.0

这是因为该值是使用默认语言环境转换的。 AFAIK Struts2 类型转换是区域设置感知的,您可以按照本地化指南为资源包中的每个区域设置定义特定格式。

您可以从 defining formats 开始对于资源包中的数字。看起来数字格式对于不同的语言环境是相同的。特定的语言环境包含它自己的十进制格式符号,因此数字的格式化输出仅取决于 Struts 在值被格式化输出或类型转换回数字时使用的当前语言环境。

Struts2 将当前语言环境保存在 Action 上下文中,并将其存储在 session 中以使用新请求设置 Action 上下文。

This is due to the fact that Struts2 is not aware that in my country , is the decimal separator, not the thousands separator.

如果 Struts 在您运行的 JVM 中注册了区域设置,那么它知道您所在国家/地区的区域设置。有关更多信息,请参阅 Struts 2 (version 2.3.28) only accepts registered locales .区域设置由浏览器隐式请求,浏览器可能具有不同的区域设置而不是操作系统默认区域设置,并通过 request_locale 参数显式请求,该参数由 i18n 拦截器处理。参见 Get user locale detected by i18n interceptor in action class .

Is there a way to instruct Struts2 to use the decimal separator of a specific Locale, so that it will be able to convert the floating numbers correctly?

Struts 使用十进制格式来格式化和转换数字,这是区域设置感知的。在向用户显示数字或将数字提交给操作之前,您只需将当前区域设置为 Struts 并根据此区域设置格式化数字。

关于java - 如何使用本地化小数点分隔符将小数值从 JSP 传递到 Action?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36624261/

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