1. Введение
В этом учебнике мы узнаем, как форматировать валюты, используя Тимьян .
2. Мейвен зависимостей
Начнем с импорта Весенняя загрузка Thymeleaf зависимость :
org.springframework.boot spring-boot-starter-thymeleaf 2.2.7.RELEASE
3. Настройка проекта
Наш проект будет простой Весна веб-приложение, которое отображает валюты на основе локате пользователя. Давайте создадим наш шаблон Thymeleaf, валюты.html , в ресурсы/шаблоны/ :
Currency table
Мы также можем создать класс контроллера, который будет обрабатывать наши запросы:
@Controller public class CurrenciesController { @GetMapping(value = "/currency") public String exchange( @RequestParam(value = "amount") String amount, Locale locale) { return "currencies/currencies"; } }
4. Форматирование
Когда дело доходит до валют, мы должны форматировать их на основе локате запрашиваемого.
В этом случае мы отправим Принять-язык заголовок с каждым запросом для представления локате нашего пользователя.
4.1. Валюта
Цифры класс, предоставляемый Thymeleaf, имеет поддержку для форматирования валют. Итак, давайте обновим наш взгляд с призывом к форматCurrency метод
Когда мы забудем наш пример, мы увидим, что валюта правильно отформатирована:
@Test public void whenCallCurrencyWithUSALocale_ThenReturnProperCurrency() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/currency") .header("Accept-Language", "en-US") .param("amount", "10032.5")) .andExpect(status().isOk()) .andExpect(content().string(containsString("$10,032.50"))); }
С тех пор, как мы установили Принять-Язык заголовок в Соединенные Штаты, валюта отформатирована с десятичной точкой и знак доллара.
4.2. Валютные массивы
Мы также можем использовать Цифры класс к формату массивов . В результате мы добавим еще один параметр запроса к нашему контроллеру:
@GetMapping(value = "/currency") public String exchange( @RequestParam(value = "amount") String amount, @RequestParam(value = "amountList") List amountList, Locale locale) { return "currencies/currencies"; }
Далее мы можем обновить наше представление, чтобы включить вызов в списокФорматКуртная метод:
Теперь давайте посмотрим, как выглядит результат:
@Test public void whenCallCurrencyWithUkLocaleWithArrays_ThenReturnLocaleCurrencies() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/currency") .header("Accept-Language", "en-GB") .param("amountList", "10", "20", "30")) .andExpect(status().isOk()) .andExpect(content().string(containsString("£10.00, £20.00, £30.00"))); }
Результат показывает список валют с надлежащей форматирования Соединенного Королевства добавил.
4.3. Трейинг нулей
Использование Строки заменяют , мы можем удалить задние нули .
Теперь мы можем увидеть полную сумму, не отставая от двойных нулей:
@Test public void whenCallCurrencyWithUSALocaleWithoutDecimal_ThenReturnCurrencyWithoutTrailingZeros() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/currency") .header("Accept-Language", "en-US") .param("amount", "10032")) .andExpect(status().isOk()) .andExpect(content().string(containsString("$10,032"))); }
4.4. Десятиборья
В зависимости от места, десятиборья могут быть отформатированы по-разному. Поэтому, если мы хотим заменить десятичную точку запятой, мы можем использовать форматДекимальный метод, предоставляемый Цифры класс:
Давайте посмотрим результат в тесте:
@Test public void whenCallCurrencyWithUSALocale_ThenReturnReplacedDecimalPoint() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/currency") .header("Accept-Language", "en-US") .param("amount", "1.5")) .andExpect(status().isOk()) .andExpect(content().string(containsString("1,5"))); }
Значение будет отформатировано как “1,5”.
5. Заключение
В этом коротком учебнике мы показали, как Thymeleaf может быть использован с Spring Web для обработки валют с помощью локале пользователя.
Как всегда, код доступен более на GitHub .