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
相关产品推荐
相关产品推荐

