You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot+Thymeleaf模板值比较问题:下拉框选中状态异常

解决Thymeleaf语言选择下拉框默认选中异常问题

问题原因

Thymeleaf中的#locale是Locale类的实例对象,并非直接的字符串类型。直接用${#locale == 'es'}这种对象与字符串的比较逻辑永远不成立,导致th:selected属性无法正确触发,浏览器会默认选中第一个选项。

修复方案

通过Locale对象的language属性获取两位语言代码(如es、en),再与选项值做字符串比较:

修正后的代码

<div th:text="${#locale}"></div>
<div class="language-picker js-language-picker">
    <form action="" class="language-picker__form">
        <select th:id="language-picker-select" name="language-picker-select">
            <option th:value="es" th:selected="${#locale.language == 'es'}">Español</option>
            <option th:value="fr" th:selected="${#locale.language == 'fr'}">Français</option>
            <option th:value="pt" th:selected="${#locale.language == 'pt'}">Português</option>
            <option th:value="en" th:selected="${#locale.language == 'en'}">English</option>
        </select>
    </form>
</div>

补充说明

  • 如果使用后台传入的${locale}对象,同样需要用locale.language获取语言代码,判断逻辑改为${locale.language == 'es'}
  • 需检查选项的th:selected表达式是否存在笔误(比如你最初代码中English选项误写为${#locale=='pt'},这类低级错误也会导致选中异常)

内容的提问来源于stack exchange,提问作者Nunyet Calçada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:48:27