Thymeleaf翻译默认值设置问题:如何用翻译键作为默认消息?
Thymeleaf 用翻译消息作为默认值的解决方案
你遇到的问题是因为#{default-message}这种Thymeleaf消息表达式不能直接嵌套在${}的OGNL表达式内部,导致语法解析失败触发500错误。以下是两种可行的解决方式:
方法一:用消息工具类获取默认翻译值
直接通过#messages.msg()方法加载默认消息的翻译内容,作为msgOrNull()的备选值:
<span th:text="${#messages.msgOrNull('your-target-key') ?: #messages.msg('default-message')}"/>
如果担心默认消息键也不存在,可以用msgOrNull()兜底,避免抛出异常:
<span th:text="${#messages.msgOrNull('your-target-key') ?: #messages.msgOrNull('default-message') ?: '最终兜底文本'}"/>
方法二:分场景渲染
用th:if和th:unless分别处理目标消息存在/不存在的情况,逻辑更直观:
<span th:if="${#messages.msgOrNull('your-target-key')}" th:text="#{your-target-key}"/> <span th:unless="${#messages.msgOrNull('your-target-key')}" th:text="#{default-message}"/>
内容的提问来源于stack exchange,提问作者Bademeister
相关产品推荐
相关产品推荐

