关于Thymeleaf无法取值问题
SpringBoot2.7以前的版本在获取model中数据的时候不需要注释,2.7以后的版本需要加注释,它无法直接取存在model中的数据,不加注释的时候会爆红但是可以正常使用,这个注释的含义就是指定数据类型(数据就是注释中的id),到这里我好像抓住了什么,所以我查看了一下2.7和2.6两个版本,在2.6版本中,获取model中的数据时会有提示,提示的数据后面也有数据对应的数据类型,而2.7版本需要添加以下注释标明该数据的类型,所以我大胆猜测一下:2.7以上的版本可能无法解析model中的数据,所以需要添加注释(我也不确定是否正确,只是我的猜测,毕竟我在网上也没找到答案)
验证一下我的猜测:我通过model添加"Hello,SpringBoot-thymeleaf"到message中,再到html页面通过thymeleaf模板取出message显示在网页上,观察是否能取出message?
model.addAttribute("message", "Hello,SpringBoot-thymeleaf");
目前我降了版本,为2.6.9版本,而且我没有加注释,它可以解析后台model中的数据,清晰的看到message后面的类型
我调回到2.7.1版本,也没有加注释,就会报错,报的错是:无法解析message,但是你到网页上看也是正常显示的
在2.7版本,只要html页面添加了以下注释,指定了id和数据类型,就可以直接使用该对象,哪怕后台没有这个数据也可以获取
<!--/*@thymesVar id="abc" type=""*/-->
<h2 th:text="${abc}"></h2>
注释中没有数据类型,取值的时候也没有数据类型
2.7版本只是无法取值,通过Controller控制分发还是可以的,这个是没问题的,可以转发。当然,重定向可不可以还需实验
<!--这个 /a 是Controller中写好的接口-->
<h1><a th:href="@{/a}">跳转a页面</a></h1>
@RequestMapping("/a")
public String test2(){
return "a";
}
针对无法取值这个问题,有两个解决方案:
(虽然降版本一劳永逸,但是SpringBoot停止了维护2.6版本,而且我们也应该与时俱进,还是要习惯新版本的编程习惯
毕竟这种方式也有好处,可以更好指定值类型,只是每一次取值的时候都加一行注释来指定类型显得很不爽)
- 第一是按照提示,添加注释,注释中id就是model中的 attributeName
- 第二就是降版本,降到2.6版本,这个问题就迎刃而解(我个人不太推荐关闭thymeleaf的错误提示,网上大多都是推荐关闭错误提示)
欢迎大家发表意见,一起讨论共同进步!
关于Thymeleaf无法取值问题的更多相关文章
- Thymeleaf Javascript 取值
<script th:inline="javascript"> var openid = /*[[${session.wxuser.openId}]]*/ </s ...
- Thymeleaf前后端传值 页面取值与js取值
参考: Thymeleaf前后端传值 页面取值与js取值 Thymeleaf 与 Javascript Thymeleaf教程 (十二) 标签内,js中使用表达式 目的: 后端通过Model传值到前端 ...
- 如何解决流程开发中SheetRadioButtonList页面取值问题
分享一个常见的取值问题. 应用场景: SheetRadioButtonList控件,点击其中一项执行事件操作.如果是页面加载的情况下,值就无法取到. 具体原因如下: 我给SheetRadioButto ...
- jQuery radio的取值与赋值
取值: $("input[name='radioName']:checked").val(); 赋值: $("input[name='radioName'][value= ...
- python通过函数改变变量取值
严格讲应该是"通过函数调用,改变引用对象".python中,要区分"变量名"和"对象" 如果是类的对象,是引用类型的,那么可以通过函数调用, ...
- jsf初学selectOneMenu 绑定与取值
jsf 的selectOneMenu 最后生成的<select>标签.这里涉及到一个binding 起初一直不知道是干嘛的,后来参考了其他文章.就相当于在asp.net 中如:<as ...
- CYQ.Data 快速开发之UI(赋值、取值、绑定)原理
昨夜园子猴子问了几个我CYQ.Data使用的小问题,经过简单解答后,他表示“妈妈再也不用担心我的学习",并于事后以资鼓励,希望这框架越走越好. 除了技术上的交流,双方在生活,S上面的问题上也 ...
- EditText的inputType常用取值
最近经过实际试验,总结了InputType几个常用取值表示的含义: 1.none, text, textVisiblePassword: 无任何输入限制 2.textMultiLine: 允许多行输入 ...
- jquery select取值,赋值操作
select">jquery select取值,赋值操作 一.获取Select 获取select 选中的 text : $("#ddlRegType").find( ...
随机推荐
- 攻防世界-MISC:give_you_flag
这是攻防世界新手练习区的第四题,题目如下: 点击附件一下载,打开后发现是一个gif动图 可以看到动图有一瞬间出现了一个二维码,找一个网站给他分离一下 得到一张不完整的二维码(然后就不知道该怎么办了,菜 ...
- [STL] stack 栈
在出栈时需要进行两步操作,即先 top( ) 获得栈顶元素,再 pop( ) 删除栈顶元素
- 引入『客户端缓存』,Redis6算是把缓存玩明白了…
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是没更新就是在家忙着带娃的Hydra. 在前面介绍两级缓存的文章中,我们总共给出了4种实现方案,在项目中整合了本地缓存Caffe ...
- 为什么建议大家使用 Linux 开发?
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ Linux 能用吗? 我身边还有些朋友对 linux 的印象似乎还停留在黑乎乎的命令行界面上. ...
- c++动态内存分配需要注意的地方,可以不用尽量不用
在实际开发中,需要动态分配内存的场景极少,string和vector已经足够方便,如果不是非用不可的情况,采用动态分配内存就是给自己挖坑. 如果应用开发中一定要用动态内存分配技术,建议把它封装在类中, ...
- 网络协议之:sctp流控制传输协议
目录 简介 TCP有什么不好 sctp的特点 总结 简介 要讲网络协议,肯定离不开OSI(Open System Interconnection)的七层模型. 我们一般关注的是网络层之上的几层,比如I ...
- 认识并安装WSL
认识并安装WSL(基于Windows的Linux子系统) 什么是WSL WSL(Windows Subsystem for Linux),这是在windows平台运行的linux子系统.也就是说可是不 ...
- ApeForms | WinForm窗体UI美化库(Metro扁平风格)演示与安装
ApeForms系列① 快速上手 @ 目录 ApeForms系列① 快速上手 前言 演示视频 快速上手 安装及使用 Demo下载 联系开发者 加入我们 建议与咨询 前言 ApeForms是一套基于Wi ...
- unittest自动化测试框架核心要素以及应用
1. unittest核心要素 unittest介绍 测试框架,不仅仅用于单元测试 python自动的测试包 用法和django.test.TestCase类似 1.1.unitest介绍和核心要素 ...
- 【C++函数题目】重载完成Compare函数
题目来源链接:https://www.dotcpp.com/oj/problem2008.html 题目讲解链接:http://6o2.cn/1yjJB2 题目描述 利用函数重载完成三个比较大小的C ...