fmt formatNumber type =“currency”显示“¤”而不是实际货币符号

时间:2016-03-01 14:38:00

标签: spring jstl currency-formatting

我有以下代码将金额显示为货币:

<fmt:formatNumber type="currency" value="${camp.montoTotal}"/>

当我在Eclipse中运行应用程序(实际上我正在使用STS)时,它看起来不错:“500美元”。 但是当我将WAR文件部署到服务器(在Ubuntu LTS 14.04上使用Tomcat8)时,它显示“¤500”,即显示通用货币标记而不是实际符号。我试图强制使用以下语言环境:

<META http-equiv="Content-Language" content="es-AR">
<fmt:setLocale value="es-AR"/>

但结果相同。为什么会这样?

2 个答案:

答案 0 :(得分:1)

我终于找到了答案!!

最初我在app-config xml中配置了messageSource bean。当我将它移动到applicationContext xml时,问题就解决了。我不得不这样做,因为我在尝试使用getMessage函数访问控制器中的消息属性时也遇到了问题。

  <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
       <property name="basename" value="messages"/>
  </bean>

结论:必须在应用程序上下文中配置messageSource,而不是在根配置xml中配置。

答案 1 :(得分:1)

首先,您需要导入标记库:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

接下来,使用 setLocale

设置国家/地区
<fmt:setLocale value="es-AR"/>

然后您可以使用 formatNumber 标记

格式化数字
<fmt:formatNumber value="${camp.montoTotal}" type="currency" currencySymbol="$"/>

在属性中,您可以添加要使用的 currencySymbol

希望它对你有所帮助。 的问候,