2011-11-29 56 views
2

我有一些英鎊的貨幣金額的JSP。我希望看到美國同一頁面的人看到$符號而不是英鎊。 (暫時忘記值也應該被轉換)。根據語言環境呈現貨幣符號

我用這JSTL解決方案來設置語言環境

<c:set var="language" value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}" scope="session" /> 
<fmt:setLocale value="${language}" /> 

這完全適用於這樣的輸出字段:

<fmt:formatNumber type="currency" value="${myOutputAmount}" /> 

但也有一些對£一些輸入字段的自己在輸入框之前,例如:

£<input type="text" id="myInputAmount"/> 

如何使用該區域設置顯示相關的貨幣符號而不是£?

我已經搜索並找到iPhone,PHP,Android,C#和Java的解決方案。我可以在我的JSP中實現一個Java解決方案,但是JSTL一個非常簡潔,我相信必須有一個簡單的方法,然後利用這個方法。

回答

1

不幸的是,沒有JSTL標籤。

在普通的Java,你可以通過Currency#getSymbol()如下得到它:

String currencySymbol = Currency.getInstance(new Locale(language)).getSymbol(); 
// ... 

你可以在一個JavaBean的getter,EL函數或者一個(不寒而慄)小腳本週圍包裹。您可以在this answer的底部找到如何創建EL功能的具體示例。


更新:你可以使用這個 「黑客」 來獲得貨幣符號了<fmt:formatNumber>的:

<fmt:formatNumber var="currencyExample" value="${0}" type="currency" maxFractionDigits="0" /> 
<c:set var="currencySymbol" value="${fn:replace(currencyExample, '0', '')}" /> 
... 
${currencySymbol}<input type="text" name="amount" /> 
+0

感謝@BalusC。我去了EL選項。它的工作原理除了:(a)我必須將我的JSTL「語言」變量拆分爲「語言」和「國家」,例如將「en_US」轉換爲Locale構造函數的「en」和「US」; (b)當我想要「$」時,它返回「USD」。從我讀過的內容來看,我認爲這是因爲我的默認語言環境?我正在研究它...... –

+0

也許我應該早些說過,我的「語言」變量來自我的設置'session.setAttribute(「language」,「en_US」);'服務器端 –

+0

我明白了。那麼,我更新的答案中的「黑客」應該爲你解決。 – BalusC