如何在 thymeleaf 的 SpEL 中转义 '-'
How to escape '-' in SpEL in thymeleaf
在我的 Spring 控制器中,我为我的模型属性设置了以下内容:
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'
很清楚,因为-
是一个算术运算符。 有没有办法逃避-
读取模型值?
我的建议是:不要使用带有破折号的变量名。 (你会尝试在 java 中定义一个变量 int abc-def = 5;
吗?)
无论如何,如果你必须使用它,这似乎是可行的:
<th:block th:text="${#request.getAttribute('abc-def')}" />
百里香叶 2
根据 Expression Basic Objects section of the documentation (with more details in Appendix A),上下文变量位于 #vars
对象中。所以,你可以像这样访问变量:
<th:block th:text="${#vars.get('abc-def')}" />
百里香叶 3
正如银河战士评论的那样,Thymeleaf 3 中的所有更改。It combines the #ctx
and #vars
objects, so you need to use the Context's getVariable 方法:
<th:block th:text="${#ctx.getVariable('abc-def')}" />
但这不是最好的计划
虽然这些肯定会 "work",但其中包含标点符号的变量有点不寻常,并且可能会使下一位程序员在查看您的代码时感到困惑。除非我有充分的理由使用该名称,否则我不会这样做。
在我的 Spring 控制器中,我为我的模型属性设置了以下内容:
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'
很清楚,因为-
是一个算术运算符。 有没有办法逃避-
读取模型值?
我的建议是:不要使用带有破折号的变量名。 (你会尝试在 java 中定义一个变量 int abc-def = 5;
吗?)
无论如何,如果你必须使用它,这似乎是可行的:
<th:block th:text="${#request.getAttribute('abc-def')}" />
百里香叶 2
根据 Expression Basic Objects section of the documentation (with more details in Appendix A),上下文变量位于 #vars
对象中。所以,你可以像这样访问变量:
<th:block th:text="${#vars.get('abc-def')}" />
百里香叶 3
正如银河战士评论的那样,Thymeleaf 3 中的所有更改。It combines the #ctx
and #vars
objects, so you need to use the Context's getVariable 方法:
<th:block th:text="${#ctx.getVariable('abc-def')}" />
但这不是最好的计划
虽然这些肯定会 "work",但其中包含标点符号的变量有点不寻常,并且可能会使下一位程序员在查看您的代码时感到困惑。除非我有充分的理由使用该名称,否则我不会这样做。