Рубрики
Без рубрики

Форматирование валют весной с использованием тимьяна

Научитесь форматировать валюты весной с помощью Thymeleaf.

Автор оригинала: baeldung.

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 .