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

Thymeleaf带参数fragment调用时内部元素及参数绑定失效如何解决?

问题成因

这一问题的核心是th:text属性的渲染逻辑导致的:th:text会直接替换其所在标签的全部子内容,包括内嵌的子元素、文本节点等,仅保留th:text指定的文本值。
你代码中th:text="${label}"写在了<label>标签上,因此<label>内部原本定义的两个单选框元素会被直接覆盖,仅渲染label参数的文本内容。参数本身的传递是正常的,从渲染结果中Name文本正确展示就能验证这一点。

解决方法

调整Fragment定义结构,不要在父级<label>标签上使用th:text即可,可选方案有两种:

  1. 将文本展示逻辑拆分到独立的内嵌<span>标签中,修改后的Fragment示例如下:
<div th:fragment="sort (label,field)">
    <label>
        <span th:text="${label}">Label</span>
        <input th:name="'sort-' + ${field}" type="radio" value="asc"/>
        <input th:name="'sort-' + ${field}" type="radio" value="dsc"/>
    </label>
</div>
  1. 使用Thymeleaf文本内联语法,不需要额外新增标签:
<div th:fragment="sort (label,field)">
    <label>
        [[${label}]]
        <input th:name="'sort-' + ${field}" type="radio" value="asc"/>
        <input th:name="'sort-' + ${field}" type="radio" value="dsc"/>
    </label>
</div>

修改后原有调用方式不需要做任何调整,渲染结果会正常包含label文本和两个对应name属性的单选框。


内容的提问来源于stack exchange,提问作者Bogdan Tischenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:15:05