Thymeleaf:语言选择器的开关语句



我正在为春季启动项目实现用百里多夫的语言选择器,但是我无法在案例语句中使用变量$ {#ctx.locale}。它始终需要默认一个("*")。

<li class="nav-item dropdown">
<a class="nav dropdown-toggle"
   id="languages" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        <i class="material-icons">language</i>
        <div th:switch="${#ctx.locale}">
            <p th:case="en">English</p>
            <p th:case="es">Español</p>
            <p th:case="ca">Català</p>
            <p th:case="*">English</p>
        </div>
</a>
<div class="dropdown-menu" aria-labelledby="languages">
    <a class="dropdown-item" th:href="@{?lang=en}">English</a>
    <a class="dropdown-item" th:href="@{?lang=es}">Español</a>
    <a class="dropdown-item" th:href="@{?lang=ca}">Català</a>
</div>

实际上,我只需要语言名称。谢谢。

解释在这里:胸腺胶卷 - 表达式 - 弦乐

在您的代码中更改th:switch="${#ctx.locale}" to th:switch="__${#locale.language}__"

<div th:switch="__${#locale.language}__">
    <p th:case="en">English</p>
    <p th:case="es">Español</p>
    <p th:case="ca">Català</p>
    <p th:case="*">English</p>
</div>

最新更新