DecimalFormat 被服务器设置覆盖

2023-12-19

目前我在显示格式化小数时遇到问题。在我的本地计算机中,我有一个十进制值:0.002100000000 存储在数据库中。

<h:outputText value="0.002100000000" converter="#{bigDecimal4DigitsConverter}" />

@FacesConverter("bigDecimal4DigitsConverter")
public class BigDecimal4DigitsConverter extends BigDecimalConverter {

    private DecimalFormat format = new DecimalFormat("#,##0.0000");

    @Override
    protected DecimalFormat getDecimalFormat() {
        return format;
    }
}

我的问题出在我的本地计算机上,它显示: 0.0021 - 美国设置 但在另一台服务器上 0,0021 - 法语设置

这是为什么?我认为 DecimalFormat 会格式化十进制值,而不管区域设置如何?


The DecimalFormat pattern http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html正如其名称(和 javadoc)所示,它是一种纯粹的模式。在这种模式下,,代表分组分隔符和.代表小数点分隔符。就是这样MMM代表月份的缩写SimpleDateFormat http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html(请注意,它不会返回MMM作为格式化期间的月份,但就像May或例如Mei取决于区域设置)。

The actual用作分组分隔符和小数点分隔符的字符(以及actual格式化期间用作缩写月份的文本取决于区域设置,正如您所观察到的那样。这是正确的行为。当您在创建过程中没有明确指定区域设置时DecimalFormat (or SimpleDateFormat),然后可用的默认区域设置Locale#getDefault() http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#getDefault%28%29将被假设。您实际上应该指定UIViewRoot#getLocale()或者也许是一个固定的区域设置,例如Locale.ENGLISH如果您的 JSF Web 应用程序由于某种不明原因未本地化。

另请注意DecimalFormat就好像SimpleDateFormat)不是线程安全的(检查javadoc中的“同步”部分)。您不应该在类/实例范围内创建它,而应该在线程本地范围内创建它(即在与您需要它的位置完全相同的方法块中)。

我只是不知道哪个BigDecimalConverter你正在使用,标准 JSF 之一 http://docs.oracle.com/javaee/6/api/javax/faces/convert/BigDecimalConverter.html没有getDecimalFormat()方法,所以我无法给出正确方法的更具体示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DecimalFormat 被服务器设置覆盖 的相关文章

随机推荐

  • 在cloudfoundry上发布项目时出现错误java.io.FileNotFoundException(log4j日志文件)

    我计划将 Web 应用程序与 mysql 服务一起迁移到 Cloud Foundry 但我遇到了以下错误 它与当地环境配合良好 日志文件也会生成 下面是错误日志 Jan 5 2013 7 35 59 AM org cloudfoundry
  • X-Forwarded-Proto 和 Flask

    我有完全相同的问题描述这个问题和答案 https stackoverflow com questions 19840051 mutating request base url in flask 这个问题的答案是一个很好的解决方法 但我不明白
  • 用c++做一个定时器?

    我正在用 C 开发一个简单的游戏 一种追逐点风格的游戏 你必须单击显示屏上的一个绘制的圆圈 然后每次单击都会跳到另一个随机位置 但我想让游戏在 60 后结束几秒钟左右 将分数写入文本文件 然后在启动程序时从文本文件中读取信息并将信息存储到数
  • 使用默认分隔符与用户定义分隔符分割字符串

    我尝试了一个使用字符串分割的简单示例 但出现了一些意外的行为 这是示例代码 def split string source splitlist for delim in splitlist source source replace del
  • 防止渐变叠加滚动

    我试图在滚动 div 的底部放置一个小渐变 我的解决方案基于已接受的答案这个所以线程 https stackoverflow com questions 9204450 how to apply a fade away effect not
  • Facebook Messenger API“无法验证 URL”

    我正在尝试设置 Facebook Messenger API 但在尝试添加 WebHook 时收到此错误 无法验证该 URL 回调验证失败 出现以下错误 curl errno 60 curl error SSL证书问题 无法获取本地颁发者证
  • init] 自动引用计数

    我知道我应该使用 ObjectClass tmpObject ObjectClass alloc init realObject tmpObject tmpObject release 初始化realObject where realObj
  • 如何遍历NLTK树对象?

    给定一个括号内的解析 我可以将其转换为 NLTK 中的 Tree 对象 如下所示 gt gt gt from nltk tree import Tree gt gt gt s ROOT S NP NNP Europe VP VBZ is P
  • JSF2 静态资源管理——组合、压缩

    有谁知道动态组合 缩小所有 h outputStylesheet 资源 然后在渲染阶段组合 缩小所有 h outputScript 资源的方法 混合 缩小的资源可能需要使用基于组合资源字符串或其他内容的键进行缓存 以避免过度处理 如果这个功
  • 位置:粘性 - 与 javascript 高度调整结合使用时滚动弹跳

    玩完之后position sticky有一段时间 我开始实现粘性导航 并遇到了这个有趣但令人沮丧的滚动弹跳问题 这是许多网站上常见的导航行为类型 传统上您会使用 JavaScript 来计算页面中相对元素的偏移量 当元素到达窗口顶部时 将添
  • 在conda环境中安装tensorrt

    我正在尝试在 conda env 中安装tensorrt 并且通过 conda navigator 在我的环境中安装了 cudatoolkit 和 cudnn 我还更新了我的 pip 和 setuptool 但出现以下错误 我应该怎么办 E
  • 如何替换上传文件的文件名中的空格

    我正在制作一个 SWF 上传器并已完成 HTML 表单 它工作得很好 直到我上传名称中包含空格的 SWF 文件 如何用下划线替换空格 我努力了 str replace file 和 preg replace file 如何用下划线替换空格
  • 轨道发动机及装置

    我有一个 Rails 引擎 我想在其中使用 Devise 我像正常一样安装了以下设备本指南 https github com plataformatec devise wiki How To 3a Use devise inside a m
  • “找不到适用于应用程序的有效 aps 环境权利”

    当我将支持推送通知的 iPhone 应用程序的 Ad Hoc 版本加载到我的设备上时 我遇到此错误 找不到适用于应用程序的有效 aps 环境权利 这是什么意思 我该如何修复它 我找到了解决方案 在 构建 gt 代码签名身份 下的项目信息中
  • SQL Server 2005 - 使用前导零格式化十进制数(包括带符号的小数!)

    我需要格式化数字 例如 1 99 21 34 1797 94 300 36 21 99 2 31 使用 SQL Server 2005 T SQL 将格式掩码转换为 0000 00 保留有符号整数和点后的小数 这将用于金融系统的文本文件导出
  • 如何下载 Microsoft.TeamFoundation.Framework.Common.dll

    我正在 Visual Studio 2015 中构建一个应用程序 以允许人们查看 TFS 服务器的变更集 我找到了一些示例代码 但是它需要引用 Microsoft TeamFoundation Framework Common dll 但我
  • 如何将数组/数据表等变量传递给 SQL Server?

    有时 您需要升级数据库 其中数据表中有许多行 或者您有一个充满数据的数组 而不是将所有这些数据放在一个字符串中 然后在 SQL SERVER 中拆分 或者不是在 SQL SERVER 中迭代数据表 逐行代码并更新数据库 还有其他方法吗 SQ
  • 防止按钮在回车键上提交

    我有两个按钮 一个带有 id enterToSubmit 另一个带有 id clickToSubmit 当用户按下回车键时 我希望 enterToSubmit 按钮提交表单 而不是 单击提交 按钮 在同一页面上 我有一个文本框 id tit
  • MySql REGEXP 匹配两个逗号分隔的字符串

    我有一个包含以下值的表 id value 1 1 2 5 8 12 20 2 11 25 26 28 现在我想搜索一些逗号分隔的 ID 例如上述值列中的 1 3 6 7 11 例如 SELECT id FROM tbl name WHERE
  • DecimalFormat 被服务器设置覆盖

    目前我在显示格式化小数时遇到问题 在我的本地计算机中 我有一个十进制值 0 002100000000 存储在数据库中