You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至Corretto 11环境后,<f:convertNumber>货币符号与值间输出&nbsp;而非普通空格

迁移后<f:convertNumber>货币符号与数值间非断行空格导致Excel导出问题

问题背景

  • 原环境:64位Amazon Linux/3.4.21、Tomcat 8.5 + Java 8、Mojarra 2.2.20
  • 新环境:64位Amazon Linux 2/4.3.0、Tomcat 8.5 + Corretto 11、Mojarra 2.2.20
  • 异常现象:使用<f:convertNumber>渲染货币格式时,新环境中货币符号与数值间输出&nbsp;(示例:$&nbsp;100,00),旧环境则为普通空格,该差异导致Excel导出出现问题;其他字符串Bean变量的空格显示正常。

相关代码示例:

<h:outputText value="#{c.value}">
    <f:convertNumber type="currency" locale="#{utilBean.user.myLocale}" />
</h:outputText>

解决方案

修改Tomcat的配置,强制输出普通空格:

方式1:修改catalina.properties

在Tomcat安装目录下的conf/catalina.properties文件中添加或更新以下配置项:

org.apache.el.parser.SKIP_IDENTIFIER_CHECK = true

方式2:添加JVM启动参数

在Tomcat的启动脚本(如catalina.sh)中,为JVM添加如下参数:

-Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true

原理说明

Corretto 11(Java 11)的EL解析器行为与Java 8存在差异,开启org.apache.el.parser.SKIP_IDENTIFIER_CHECK参数后,Tomcat的EL解析器会跳过对标识符的严格校验,避免将普通空格转换为非断行空格,从而让<f:convertNumber>输出的货币格式保持与旧环境一致的普通空格。

内容的提问来源于stack exchange,提问作者edudoda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:10:25