отображать символ валюты на основе локали - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть JSP с некоторыми денежными суммами в фунтах стерлингов. Я хочу, чтобы люди, просматривающие ту же страницу из США, видели символ $ вместо £ s. (На мгновение забудьте, что значения также должны быть преобразованы).

Я использую это решение 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}" />

, но есть также некоторые поля ввода, в которых перед полем ввода стоит символ «£», например ::10000

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

Как я могу использовать эту локаль для отображения соответствующего символа валюты вместо £?

Я искал и нашел решения для iPhone, PHP, Android, C # и Java. Я мог бы реализовать Java-решение в своем JSP, но JSTL было настолько изящным, что я уверен, что должен быть простой способ, используя все, что работает.

1 Ответ

1 голос
/ 29 ноября 2011

К сожалению, для этого нет тега JSTL.

В простой Java вы можете получить его по Currency#getSymbol() следующим образом:

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

Вы можете обернуть его в Javabean-геттер, EL-функцию или, возможно, ( shudder ) скриптлет. Вы можете найти конкретный пример того, как создать функцию 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" />
...