关于EL表达式与thymeleaf

路飞
路飞
路飞
43
文章
13
评论
2019年12月21日21:44:55 评论 337 1251字阅读4分10秒

前言

很久之前,也许你在JSP代码中会遇到类似${person.name}、${person['name']}这样的代码,这样的代码被称之为EL表达式,看起来像不像现在普遍使用的模板引擎thymeleaf里的用法? 早期当Java WEB开发还处在JSP的时代,由于EL表达式的高效性,大家都习惯JSP配合EL表达式快速读取后台返回的数据,可后来因模板引擎的兴起,而Springboot又极力推崇thymeleaf等原因,编程人员都选择了新技术模板引擎来主导项目,导致EL表达式渐渐淡出了大家的视线,乃至于偶尔遇到spring项目时,时常会和thymeleaf模板引擎里的写法搞混,今天给大家说道说道资格EL表达式的前世今生。

EL表达式

EL是JSP 2.0增加的技术规范,其全称是表达式语言(Expression Language),是从 JavaScript 脚本语言得到启发的一种表达式语言,它借鉴了 JavaScript 多类型转换无关性的特点,意在简化jsp页面中java代码的编写。在使用 EL 从 scope 中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。

EL的作用域范围从小到大依次包含pagerequestsessionapplication

当EL表达式中的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找。也可以用范围作为前缀表示属于哪个范围的变量,例如:${pageScope. userinfo}表示访问page范围中的userinfo变量。

在读取数据时,若EL找不到键值对应的属性值,不会显示null,会显示空字符串。

读取数据

  1. EL 提供“.“和“[]“两种运算符来读取数据,此外“[]“可以读取动态属性名的值以及包含特殊字符的属性名的值。
  2. 通过${域名称.键名[索引]}读取list数据;通过${域名称.键名.key}读取map数据。

困惑

了解完了EL表达式后,回过头说说,为什么会纠结EL表达式?

那是因为现在做Springboot开发结合thymeleaf模板引擎使用时,有时想读取后台的数据看看,习惯性思维用JSP那一套${xxx}来输出内容,可偏偏thymeleaf的使用和JSP有点类似, 但是thymeleaf是使用的html静态网页,这个时候你是得不到任何输出的,你必须使用thymeleaf的标签才能输出,类似<p th:text="Hello, ${name}" >message</p>,是不是有点懵圈。这里抓住一个重点就行EL是JSP的产物,和html没有关系的。用了模板引擎就老老实实使用标签吧,不要想着老一套了。

总结

  1. EL表达式只和JSP挂钩,在html中是无法使用的。
  2. 要么使用EL + JSP,要么使用thymeleaf + html,两种模式不要混用,鱼和熊掌不可兼得。
  3. 关于EL表达式和thymeleaf的内容繁多,你又有事情可做了。
  4. 文章中描述的知识点,只是相对的准确, 不要拿来当教条,更多的知识点请执行学习补充。
继续阅读
weinxin
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。
路飞
  • 本文由 发表于 2019年12月21日21:44:55
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Windows 10无法删除恢复分区 信息技术

Windows 10无法删除恢复分区

1  前言 Windows 10安装的时候,默认会创建一些类似【恢复】、【系统保留】分区,强迫症促使我想去删除它们,一般情况,通过【计算机管理】中的【磁盘管理】可以操作,但是你会发现根本没有删除选项,...
Tomcat增加管理账户 信息技术

Tomcat增加管理账户

默认情况下,Tomcat的管理功能是关闭的,如何开启? 使用文本编辑工具打开 ${TOMCAT_HOME}\conf\tomcat-users.xml 文件,在最下面可以看到Tomcat默认把用户以及...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: