2016-03-01 98 views
3

我有以下代码来显示一个量作为货币:FMT formatNumber类型=“货币”显示“¤”而不是实际的货币符号

<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"/> 

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

+0

我发现了一些奇怪的事情:这个问题只发生在Chrome上!如果我使用IE或Edge,它会正确显示$符号。另外,如果我从本地主机的Eclipse服务器上通过Chrome浏览器访问IE或Edge,它可以正常工作。失败的组合是Tomcat远程服务器+ Chrome。在智能手机上试用了Chrome并且也失败了。 –

回答

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

首先,你需要导入标签库:未来

<%@ 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

希望它可以帮助你。 Regards,