彻底解决thymeleaf提示${xxx.xx}无法解析的问题 Validates unresolved references and invalid expressions 不用更改idea设置

2 篇文章 0 订阅
1 篇文章 0 订阅

彻底解决thymeleaf提示${xxx.xx}无法解析的问题,不用更改idea设置

前言

出现问题的时候,百度了很多,一些常见错误以及解决方法列举如下:

  1. 加注释 (本人没有测试过)
    在这里插入图片描述

  2. 修改idea设置
    在这里插入图片描述

  3. 实体类无getXXX()方法出错,解决办法就是实体类添加getXXX()方法

  4. 拼写错误的问题,如 xx.id 写为 xx.getId

  5. 路径错误,路径前面多写了一个 /

在这里插入图片描述

  1. 更换写法,本人测试可行,但写法比较复杂
    在这里插入图片描述
  2. 书写格式错误
    在这里插入图片描述

在这里插入图片描述

一、idea提示${xxx.xx} Cannot resolve的根本原因

说明:虽然idea提示无法解析,但项目都可以正常运行。项目无法正常运行导致的无法解析问题,不在本文讨论范围。

先看两个工程代码的对比:

工程一:
controller代码:
在这里插入图片描述
html代码:
在这里插入图片描述
可以看到,工程一不会提示无法解析的问题。

工程二:
controller代码:
在这里插入图片描述

html代码:
在这里插入图片描述
两个项目都可以正常运行,maven依赖也是一样的,但工程二就是提示无法解析。

二、发现原因

html页面敲代码的时候,发现了下面的问题:

在这里插入图片描述

在这里插入图片描述
项目一,没有提示无法解析的问题 ,idea提示,user是我写的实体类类型。
项目二,提示无法解析,idea提示,brand是Object类型,不是我写的实体类。
这是因为,在使用model传数据的时候,一个是实体类类型,一个是Object类型。

项目一类型是实体类类型

在这里插入图片描述

项目二类型是Object类型

在这里插入图片描述

① user.id : idea在解析时,会去实体类找getId()方法,找到了,自然不会提示无法解析。
② brand.name : idea在解析时,会去Object类找getName()方法,找不到,提示无法解析。当然,项目运行时,依然调用的是实体类的getName() 方法,所以程序可以正常执行,但解析时会提示报错。idea虽然强大,但依然有不完美的地方。

三、解决问题

知道了根本原因,解决问题自然很简单了,model传数据的时候,不放Oject类型的就行了,放具体的实体类。
在这里插入图片描述
在这里插入图片描述
可以看到,brand.name已经不会报错了,并且,回到html页面敲代码的时候,idea会有各种提示,而category没有处理 ,依然报错。

在这里插入图片描述
本人测试,此方法对 List Map 无效,建议将数据封装成实体类并提供getXXX()方法,再使用model传数据。
出现问题的时候,百度了很多,但都没有从根本上解决,不是我想要的。而本人有点强迫症,看着提示错误,有点不舒服,花了一个多小时,最终发现了问题所在,顺利解决,完美!

以上内容为本人原创,有不对的地方请各位指教!

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值