thymeleaf ${xxx} Cannot resolve

25 篇文章 0 订阅
9 篇文章 5 订阅

问题描述

最近做了一个springboot项目,集成了thymeleaf,在使用thymeleaf的过程中遇到了一个问题,就是“${xxx}”下面总是报“Cannot resolve ‘xxx’”的错误,如下图所示:
在这里插入图片描述
这个错误的意思是无法解析(读取)‘xxx’边的值。



问题原因

遇到问题了,赶紧排查一下到底是哪出问题了。

猜想一

由于是集成的thymeleaf,猜想是不是在集成thymeleaf的过程中哪一步出错了,才导致此问题的出现。于是详细地检查了每一个步骤,都没有问题。于是我启动了项目,想通过试运行看看能不能得到更多的信息以用来解决问题,但是神奇的事情出现了,页面居然获取到值了,amazing!

这就比较奇怪了,既然集成thymeleaf没有出错,页面也能读取到值,为什么还会报错呢?到底问题出在哪里?

此时我脑子里闪过一个想法,我使用的开发工具是IDEA啊,使用这款开发工具是因为极其强大的提示功能,于是有了猜想二。

猜想二

一般的开发工具只会语法进行检验,只要语法没问题就不会报错。

但是IDEA除了对语法检验之外,还对表达式进行检验。IDEA检测到html是不支持El表达式的,所以才会有“Cannot resolve”的提示。

虽然html不可以使用此表达式,但是thymeleaf可以使用啊,项目中又集成了thymeleaf,所以运行项目是可以读取到值的。

总结

也就是说,这并不是解析错误而是IDEA检测到不支持这种写法而给你的提示:不能这样写,这样写会出错。

但是在强大的工具也只是工具,只会按照既定的逻辑去走,不会懂得变通。



解决方法

但是作为程序员来说,都是有强迫症,你懂得。既然清楚了问题原因,就好说了,下面提供两个方法解决这个问题。

方法一

加注释解决,这种方法也是IDEA提示的解决此问题的方法,但提示的不一定是最好的。如下图所示:
在这里插入图片描述

只有一处还好说,要是有多处使用的话,那么每一处都要加注释,若是只有这一种方法,那就没得说了。但要是有其他的解决方法,这种方法就不可取了。

方法二

尽然是IDEA检验导致的问题,那我们就从根源上解决问题,不让IDEA做这方面的检验不就OK了。

emmmm。。。。不愧是是我😁(请原谅我的厚脸皮😂)。

点击“File”->“Settings”->“Editor”->“Inspection”,如果东西太多一时找不到,可以在输入框中输入“thy”就会很快找到thymeleaf插件,取消“Expression variables validation”的勾选,点击“Apply”再点击“OK”就行了。
在这里插入图片描述
看一下页面,提示没有了,大功告成!
在这里插入图片描述
虽然不是什么很严重的问题,但是解决问题的过程挺艰辛的,花费了不少时间,也学到了不少东西,就写篇文章分享一下,希望能帮到大家。

  • 77
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值