如何在百里香的SpEL中逃脱' - '

时间:2017-08-31 13:44:55

标签: spring-boot thymeleaf spring-el

在我的Spring Controller中,我设置了我的模型属性:

model.addAttribute("abc-def", "Hello World");

在我的thymeleaf html中,我想阅读abc-def的价值。

<th:block th:text="${abc-def}"></th:block>

但我收到错误:

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

很清楚因为-是算术运算符。 有没有办法逃脱-来读取模型值?

2 个答案:

答案 0 :(得分:4)

我的建议是:不要在其中使用带有破折号的变量名称。 (您是否尝试在java中定义变量int abc-def = 5;?)

无论如何,如果你必须使用它,这似乎有用:

<th:block th:text="${#request.getAttribute('abc-def')}" />

答案 1 :(得分:1)

Thymeleaf 2

根据文档的Expression Basic Objects部分(Appendix A中有更多详细信息),上下文变量位于#vars对象中。因此,您可以使用以下内容访问变量:

<th:block th:text="${#vars.get('abc-def')}" />

Thymeleaf 3

由于Metroids对Thymeleaf 3 It combines the #ctx and #vars objects中的所有更改进行了评论,因此您需要使用Context's getVariable方法:

<th:block th:text="${#ctx.getVariable('abc-def')}" />

但这不是最好的计划

虽然肯定会这些&#34;工作&#34;,其中带有标点符号的变量有点不寻常,并且可能会让下一个程序员混淆以查看您的代码。除非我有充分的理由使用这个名字,否则我不会这样做。