2016-03-01 89 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,