fmt formatNumber type=currency показывает ¤ вместо фактического символа валюты

У меня есть следующий код, чтобы показать сумму в валюте:

<fmt:formatNumber type="currency" value="${camp.montoTotal}"/>

Когда я запускаю приложение в Eclipse (на самом деле я использую STS), оно выглядит хорошо: «500 долларов». Но когда я развертываю файл WAR на сервере (используя Tomcat8 в Ubuntu LTS 14.04), он показывает «¤500», то есть показывает общий маркер валюты вместо фактического знака. Я попытался форсировать локаль с помощью:

<META http-equiv="Content-Language" content="es-AR">
<fmt:setLocale value="es-AR"/>

но с тем же результатом. Почему это может быть?


person Andres Gonzalez    schedule 01.03.2016    source источник
comment
Я обнаружил кое-что странное: эта проблема возникает только с Chrome! Если я использую IE или Edge, он правильно показывает знак $. Кроме того, если я просматриваю сайт из Chrome, IE или Edge с сервера Eclipse на локальном хосте, он работает нормально. Неудачная комбинация — это удаленный сервер Tomcat + Chrome. Пробовал Chrome на смартфоне и тоже не работает.   -  person Andres Gonzalez    schedule 03.03.2016


Ответы (2)


Наконец-то я нашел ответ!!

Первоначально у меня был настроен bean-компонент messageSource в файле app-config xml. Когда я переместил его в applicationContext xml, проблема была решена. Мне пришлось сделать это, потому что у меня также были проблемы при попытке получить доступ к свойствам сообщения в контроллере с помощью функции getMessage.

  <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
       <property name="basename" value="messages"/>
  </bean>

Вывод: messageSource нужно настраивать в контексте приложения, а не в корневой конфигурации xml.

person Andres Gonzalez    schedule 16.03.2016

во-первых, вам нужно импортировать библиотеку тегов:

<%@ 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, который вы хотите использовать.

Надеюсь, это поможет вам. С уважением,

person Ivan Lynch    schedule 02.07.2017