Как использовать #locale в Thymeleaf - PullRequest
0 голосов
/ 24 декабря 2018

Как мне получить правильное значение для моей локали в объекте Map?

map

"greeting": {
    "en_US": "Hi"
   , "ko_KR": "Hello"
}

Я сделал это, но этоочень плохо.

$ {greeting.get (__${#locale} __)}

1 Ответ

0 голосов
/ 25 декабря 2018

Добро пожаловать в SO.

Мысль заключается в том, что вы неправильно просматриваете значения карты.Следующее может дать вам некоторое представление о том, как вы можете это сделать, при условии, что вы добавляете атрибут с именем greeting в вашу модель.Похоже, что у вас есть карта как свойство другого объекта, и я предполагаю, что это List.Я также предполагаю, что вы пытаетесь использовать текущую локаль.

<th:block th:each="item : ${greeting}">

    <th:block th:each="map : ${item}">

        <th:block th:text="${#strings.equals(#locale, map.key) ? map.value : ''}">Value</th:block>

    </th:block>

</th:block>

Вы можете протестировать с помощью этого примера кода на стороне сервера:

    Map<String, String> map = new HashMap<>(2);

    map.put("en_US", "Hi");
    map.put("ko_KR", "Hello");

    List container = new ArrayList(1);
    container.add(map);
    model.addAttribute("greeting", container);

Обратите внимание, что если выиспользуя Spring, вместо этого вы захотите использовать messages.properties для каждой локали для интернационализации.Это сделает вашу жизнь намного проще и будет лучше следовать конвенциям весны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...