在我的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'
很清楚因为-
是算术运算符。 有没有办法逃脱-
来读取模型值?
答案 0 :(得分:4)
我的建议是:不要在其中使用带有破折号的变量名称。 (您是否尝试在java中定义变量int abc-def = 5;
?)
无论如何,如果你必须使用它,这似乎有用:
<th:block th:text="${#request.getAttribute('abc-def')}" />
答案 1 :(得分:1)
根据文档的Expression Basic Objects部分(Appendix A中有更多详细信息),上下文变量位于#vars
对象中。因此,您可以使用以下内容访问变量:
<th:block th:text="${#vars.get('abc-def')}" />
由于Metroids对Thymeleaf 3 It combines the #ctx
and #vars
objects中的所有更改进行了评论,因此您需要使用Context's getVariable方法:
<th:block th:text="${#ctx.getVariable('abc-def')}" />
虽然肯定会这些&#34;工作&#34;,其中带有标点符号的变量有点不寻常,并且可能会让下一个程序员混淆以查看您的代码。除非我有充分的理由使用这个名字,否则我不会这样做。