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

Thymeleaf中#strings.arraySplit使用报错问题及解决方法

Thymeleaf字符串拆分语法错误修复及需求实现

错误原因

你写的${#strings.arraySplit(${insData}, '@@@')}违反了Thymeleaf的EL语法规则——调用工具方法时,参数里的变量不需要额外用${}包裹,多余的${}会让EL解析器识别错误,直接报出你看到的EL1043E异常。

修正后的代码实现

按照你的需求,把mapEntry.key按@@@拆分成「Programme Name」(还要加上(MCA)后缀)和「Intake Capacity」,修正后的代码如下:

<tbody th:each="map : ${InsDashboardData}">
    <tr th:each="mapEntry : ${map}">
        <!-- 一次性拆分字符串并存储到变量,避免重复调用拆分方法 -->
        <th:block th:with="splitData=${#strings.arraySplit(mapEntry.key, '@@@')}">
            <!-- 生成带(MCA)后缀的Programme Name -->
            <td th:text="${splitData[0] + ' (MCA)'}"></td>
            <!-- 填充Intake Capacity -->
            <td th:text="${splitData[1]}"></td>
        </th:block>
        <td>[[${mapEntry.value}]]</td>
    </tr>
</tbody>

关键细节说明

  • 用th:with将拆分后的数组存到splitData变量里,复用性更强,也更高效
  • 调用#strings.arraySplit()时,直接传变量名mapEntry.key就行,不用套${}
  • 使用<th:block>作为逻辑容器,不会生成多余的HTML标签,保持页面结构干净

可选优化

如果Programme Name的缩写(比如MCA)不是固定值,而是需要从名称里动态提取,比如从「Master of Computer Application」自动提取首字母缩写,可以用Thymeleaf的字符串工具类处理:

<td th:text="${splitData[0] + ' (' + #strings.abbreviate(splitData[0], 3) + ')'}"></td>

不过这种简单取前3字符的方式不一定适配所有场景,如果有复杂的缩写规则,建议在后端处理好再传给模板,这样更稳妥。

内容的提问来源于stack exchange,提问作者Manoranjan Jena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:10:14