Мое веб-приложение имеет языковой стандарт по умолчанию, который основан на стране, в которой находится сервер. Однако задания, созданные в системе, могут базироваться в другой стране, поэтому могут довольно легко иметь другой языковой стандарт.На определенной странице я временно (в пределах области видимости страницы) пытаюсь установить языковой стандарт с помощью тега fmt:setLocale
JSTL для отображаемого языка задания, но он не работает.
Я используюэто так, где currentLocale - это код локали задания (например, en_GB или en_HK).
<fmt:setLocale value="${currentLocale}"/>
Я даже специально установил для него один из приведенных выше кодов локали:
<fmt:setLocale value="en_HK"/>
Но затем, когда дело доходит до использования функции fmt:formatNumber
, валюта не установлена должным образом:
<fmt:formatNumber value="${dailyRate}" type="currency"/>
Здесь используется стандартная локаль en_US, поэтому символ валютыэто доллар, а не HKD , как это должно быть в приведенном выше примере!
Однако, когда я изменяю область действия локали на «сессию», она работает и использует правильный код валюты:
<fmt:setLocale value="en_HK" scope="session"/>
Но я не хочу переопределять язык сессии по очевидным причинам.Кто-нибудь знает, почему это так или есть решение этой проблемы?Я видел комментарии по другим вопросам о переполнении стека, когда нечетный человек сказал, что тег setLocale
работает только тогда, когда для области установлен сеанс, но никто не объяснил, почему это может иметь место.
Только дляссылка, вот связанный вопрос, который я нашел, когда у людей была похожая проблема: формат JSTLДата, игнорирующая локаль
Заранее спасибо!