Spring boot 如何在百里鸟的SpEL中逃出“-”

Spring boot 如何在百里鸟的SpEL中逃出“-”,spring-boot,thymeleaf,spring-el,Spring Boot,Thymeleaf,Spring El,在我的Spring控制器中,我将以下内容设置为我的模型属性: model.addAttribute("abc-def", "Hello World"); 在我的thymeleafhtml中,我想读取abc def的值 这很清楚,因为-是一个算术运算符。有没有一种方法可以逃避——读取模型值?我的建议是:不要使用带有破折号的变量名。您是否尝试定义一个变量int abc def=5;在爪哇 在任何情况下,如果您必须使用它,这似乎是可行的: <th:block th:text="${#reque

在我的Spring控制器中,我将以下内容设置为我的模型属性:

model.addAttribute("abc-def", "Hello World");
在我的thymeleafhtml中,我想读取abc def的值


这很清楚,因为-是一个算术运算符。有没有一种方法可以逃避——读取模型值?

我的建议是:不要使用带有破折号的变量名。您是否尝试定义一个变量int abc def=5;在爪哇

在任何情况下,如果您必须使用它,这似乎是可行的:

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

我的建议是:不要使用带有破折号的变量名。您是否尝试定义一个变量int abc def=5;在爪哇

在任何情况下,如果您必须使用它,这似乎是可行的:

<th:block th:text="${#request.getAttribute('abc-def')}" />
胸腺素2 根据文档中包含更多详细信息的部分,上下文变量位于vars对象中。因此,您可以通过以下方式访问变量:

<th:block th:text="${#vars.get('abc-def')}" />
但这不是最好的计划 虽然这些方法肯定会奏效,但在变量中加入标点符号有点不寻常,可能会让下一个程序员看不到您的代码。除非我有很好的理由使用这个名字,否则我不会这么做。

Thymeleaf 2 根据文档中包含更多详细信息的部分,上下文变量位于vars对象中。因此,您可以通过以下方式访问变量:

<th:block th:text="${#vars.get('abc-def')}" />
但这不是最好的计划
虽然这些方法肯定会奏效,但在变量中加入标点符号有点不寻常,可能会让下一个程序员看不到您的代码。除非我有很好的理由使用这个名称,否则我不会这么做。

注意,这个语法从thymeleaf 2改为3-它在thymeleaf 3中被重命名为${vars.getVariable'abc-def'}。注意,这个语法从thymeleaf 2改为3-它在thymeleaf 3中被重命名为${vars.getVariable'abc-def'},我不会创建这样的变量。我只是问了一下,因为数据直接来自数据库,而不需要做任何更改。最后,我将其替换为${db['abc-def']}或${db.get'abd-def'},您也可以将所有数据库变量放在一个映射中,然后像这样访问它们。所以你可以避免与常规模型变量发生冲突。是的,我不会创建这样的变量。我只是问了一下,因为数据直接来自数据库,而不需要做任何更改。最后,我将其替换为${db['abc-def']}或${db.get'abd-def'},您也可以将所有数据库变量放在一个映射中,然后像这样访问它们。因此,可以避免与常规模型变量发生冲突。
<th:block th:text="${#ctx.getVariable('abc-def')}" />