SpringBootThymeleaf中Property or field ‘id‘ cannot be found on null空指针解决办法
Exception evaluating SpringEL expression: "user.id" (template: "ulist" - line 68, col 13)] with root cause org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'id' cannot be found on null
错误原因:表明 Thymeleaf 模板引擎在处理表达式 user.id
时遇到了c异常,具体原因是 User
对象为 null
。
解决方案:将实体类中的 id
属性从 long
改为 Integer
分析:
long
(基本类型) vs Integer
(包装类型)
-
long
(基本类型):-
不能为
null
,默认值是0L
。 -
如果数据库记录为
NULL
,ORM(如 Hibernate/JPA)尝试映射时会抛出异常(如PropertyValueException
),导致传递给 Thymeleaf 的对象为null
。
-
-
Integer
(包装类型):-
可以为
null
,默认值是null
。 -
ORM 能正确处理数据库中的
NULL
值,避免映射失败。
-
总结
类型 | 允许 NULL
|
ORM 映射 NULL 时的行为 |
适用场景 |
---|---|---|---|
long |
❌ | 抛出异常 | 确定字段绝对非空时 |
Integer |
✅ | 赋值为 null
|
需要处理潜在 NULL 时 |
改用 Integer
后,ORM 能正确处理数据库 NULL
值,避免了对象映射失败,从而解决了 Thymeleaf 的表达式报错问题。
上一篇: 几秒钟就充满电!科学
下一篇: 暂无数据