Thymeleaf 模板无法评估与模型相关的表达式
Posted
技术标签:
【中文标题】Thymeleaf 模板无法评估与模型相关的表达式【英文标题】:Thymleaf template is not able to evaluate expression related to model 【发布时间】:2019-11-30 20:53:52 【问题描述】:我正在开发我的第一个 Spring Boot 应用程序。它使用 MVC 模式和 Thymleaf 来呈现 html。我有一个显示模型变量的简单 HTML 模板。不幸的是,我在访问该特定映射/url时遇到了以下错误:
出现意外错误(类型=内部服务器错误,状态=500)。 评估 SpringEL 表达式的异常:“employee.Lastname”(模板:“Employees” - 第 22 行,第 8 列)
我不知道是什么问题。
我使用的是 thymleaf 3.0.11,Spring boot 2.1.2
我检查了以下内容:
-
我达到了预期的模板(我已经运行了具有静态内容的相同模板)
我也尝试过显示除姓氏之外的其他变量,它正在工作
NO 值为 null 或为空
我的员工模型类如下(没有getter-setter):
public class Employee
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long employeeId;
private String name;
private int salary;
private String Lastname;
@ManyToMany(cascade = CascadeType.MERGE, CascadeType.REFRESH )
@JoinTable(name = "Project_Employee", joinColumns = @JoinColumn(name = "employeeId"), inverseJoinColumns = @JoinColumn(name = "projectId"))
private Set<Project> projects = new HashSet<Project>();
public Employee()
super();
我的 HTML 模板如下:
<!DOCTYPE html>
<html lang="en" xmlns:th= "http://www.thymeleaf.org">
<head>
<meta charset= "UTF-8"/>
<title>Employee View</title>
</head>
<body>
<h1>WELCOME</h1>
<table>
<tr >
<th>First Name </th>
<th>Last Name </th>
<th>Salary </th>
</tr>
<tr th:each = "employee: $Employee">
<td th:text ="$employee.name"></td>
<td th:text ="$employee.salary"></td>
<td th:text ="$employee.Lastname"></td>
</tr>
</table>
</body>
</html>
和控制器ID如下(只是那个特定的方法):
@RequestMapping("/Employees")
public String getEmployee(Model model)
model.addAttribute("Employee", employeeRepository.findAll());
return "Employees";
【问题讨论】:
【参考方案1】:很可能找不到你的 getter 方法,因为你的字段名是大写的。
尝试在您的课程中将其更改为 private String lastname;
,并在您的模板中更改为 $employee.lastname
。
来自第 8.8 节,推断名称的大写,在JavaBeans Specification:
Java 程序员习惯于让普通标识符以小写字母开头。审稿人的积极反馈使我们相信,我们应该遵循同样的属性和事件名称的常规规则。
【讨论】:
@NilKulkarni 我添加了指向 JavaBeans 规范中相关文本的引用。很高兴它有帮助。 @NilKulkarni 如果我的回答有效,并且我的编辑回答了您的进一步问题,那么接受它怎么样? 感谢 Chris 的回答,它不仅解决了问题,还帮助我了解了根本原因。 @NilKulkarni 那么请接受答案。我很高兴这很有帮助。谢谢。以上是关于Thymeleaf 模板无法评估与模型相关的表达式的主要内容,如果未能解决你的问题,请参考以下文章
Thymeleaf模板引擎与springboot关联后,在html中无法使用el表达式获取model存的值
评估 SpringEL 表达式的 Spring Boot 异常
无法从 Thymeleaf 中的模型对象设置默认 CSS 变量
Spring Boot + Thymeleaf css 不适用于模板
Spring Security - Thymeleaf - 我可以在 sec:authorize 标签中评估 SPEL 表达式吗?