如何在XML模板中编写多条件空值判断的if else语句
Thymeleaf XML模板中根据布尔变量动态生成元素的优化写法
你想出来的第二种写法已经比最初版本简洁太多了——它只用一个th:if判断变量是否非空,再通过三元表达式动态设置th:Val的值,避免了重复定义<Tracking>元素,确实是更优的实现。
如果想要进一步精简代码,还可以把判断逻辑直接整合到<Tracking>元素的th:if属性中,省去外层的th:block,写法更紧凑:
<Tracking th:if="${tracking != null}" th:Val="${tracking} ? 'Y' : 'N'"/>
这个写法和你优化后的版本功能完全一致:
- 当
tracking为true时,生成<Tracking th:Val="Y"/> - 当
tracking为false时,生成<Tracking th:Val="N"/> - 当
tracking为null时,该元素不会被渲染
另外补充一点:Thymeleaf里${tracking}在变量为null时会被判定为false,所以最初的写法里${!tracking}会在null时也触发渲染,这也是需要两个th:block分开判断的原因;而优化后的写法通过明确判断tracking != null,精准控制了元素的生成时机,逻辑更清晰。
内容的提问来源于stack exchange,提问作者runnerpaul
相关产品推荐
相关产品推荐

