我有一个带有一些货币金额的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的解决方案非常简洁,我确信必须有一个简单的方法,然后利用它可行。
答案 0 :(得分:1)
很遗憾,没有JSTL标签。
在普通Java中,您可以通过Currency#getSymbol()
获取它,如下所示:
String currencySymbol = Currency.getInstance(new Locale(language)).getSymbol();
// ...
你可以将它包装在Javabean getter,EL函数或者( shudder )scriptlet中。您可以找到如何在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" />