Spring中Thymeleaf模板访问配置变量的条件表达式问题
问题分析与解决方案
你的内联三元表达式语法格式本身是正确的,Thymeleaf完全支持这种条件判断的写法。之所以没有输出,大概率是因为return是Java/EL的关键字,直接用param.return访问请求参数会导致解析异常,无法正确获取到参数值。
修复方案
由于return是关键字,不能用.运算符直接访问,需要改用方括号语法param['return']来获取这个请求参数。修改后的代码如下:
<input type="hidden" name="return" th:value="${param['return'] != null ? param['return'][0] : acmeUrl }" />
调试验证步骤
为了进一步确认问题,你可以做以下调试:
- 单独验证参数是否存在:
在模板中添加这段代码,确认return请求参数是否真的传递到了模板中:
如果能输出内容,说明参数正常;如果无输出,要检查前端请求是否正确携带了<span th:text="${param['return']}"></span>return参数。 - 查看所有请求参数:
临时添加这段代码,可以看到所有请求参数的全貌,方便排查参数是否存在:<div th:text="${param}"></div> <!-- 调试完成后记得删除 -->
你已经确认acmeUrl能正常渲染,说明Model中的变量传递没有问题,核心问题就是关键字参数的访问方式错误。
内容的提问来源于stack exchange,提问作者Squiggs.
相关产品推荐
相关产品推荐

