thymeleaf 中带有破折号的动态变量名称

Dynamic variable name with dashes in thymeleaf

我正在尝试使用另一个变量作为前缀在 thymeleaf 中创建一个变量名:

th:with="appOverview = ${__${tabId}__AppOverview}"

它大部分时间都有效,但在 tabId 包含破折号(即“my-test-tab”)的情况下,thymeleaf 会抛出以下异常:

The operator 'SUBTRACT' is not supported between objects of type 'null' and 'null'

我猜破折号让 thymeleaf 误以为它是不存在变量之间的算术运算。

我测试了用 th:with="my-var='bad dashes'" 添加一个变量并且它工作正常,所以我想破折号通常被接受为字符在变量名中。

有办法解决这个问题吗?

啊,终于找到了!

我缺少的是所有模型变量都存储在 #vars 对象的 thymeleaf 中,因此从那里访问它们不会混淆 thymeleaf。这是有效的方法:

th:with="appOverview = ${#vars.get('__${tabId}__AppOverview')}"