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无法取值问题的更多相关文章

  1. Thymeleaf Javascript 取值

    <script th:inline="javascript"> var openid = /*[[${session.wxuser.openId}]]*/ </s ...

  2. Thymeleaf前后端传值 页面取值与js取值

    参考: Thymeleaf前后端传值 页面取值与js取值 Thymeleaf 与 Javascript Thymeleaf教程 (十二) 标签内,js中使用表达式 目的: 后端通过Model传值到前端 ...

  3. 如何解决流程开发中SheetRadioButtonList页面取值问题

    分享一个常见的取值问题. 应用场景: SheetRadioButtonList控件,点击其中一项执行事件操作.如果是页面加载的情况下,值就无法取到. 具体原因如下: 我给SheetRadioButto ...

  4. jQuery radio的取值与赋值

    取值: $("input[name='radioName']:checked").val(); 赋值: $("input[name='radioName'][value= ...

  5. python通过函数改变变量取值

    严格讲应该是"通过函数调用,改变引用对象".python中,要区分"变量名"和"对象" 如果是类的对象,是引用类型的,那么可以通过函数调用, ...

  6. jsf初学selectOneMenu 绑定与取值

    jsf 的selectOneMenu 最后生成的<select>标签.这里涉及到一个binding 起初一直不知道是干嘛的,后来参考了其他文章.就相当于在asp.net 中如:<as ...

  7. CYQ.Data 快速开发之UI(赋值、取值、绑定)原理

    昨夜园子猴子问了几个我CYQ.Data使用的小问题,经过简单解答后,他表示“妈妈再也不用担心我的学习",并于事后以资鼓励,希望这框架越走越好. 除了技术上的交流,双方在生活,S上面的问题上也 ...

  8. EditText的inputType常用取值

    最近经过实际试验,总结了InputType几个常用取值表示的含义: 1.none, text, textVisiblePassword: 无任何输入限制 2.textMultiLine: 允许多行输入 ...

  9. jquery select取值,赋值操作

    select">jquery select取值,赋值操作 一.获取Select 获取select 选中的 text : $("#ddlRegType").find( ...

随机推荐

  1. 攻防世界-MISC:give_you_flag

    这是攻防世界新手练习区的第四题,题目如下: 点击附件一下载,打开后发现是一个gif动图 可以看到动图有一瞬间出现了一个二维码,找一个网站给他分离一下 得到一张不完整的二维码(然后就不知道该怎么办了,菜 ...

  2. [STL] stack 栈

    在出栈时需要进行两步操作,即先 top( ) 获得栈顶元素,再 pop( ) 删除栈顶元素

  3. 引入『客户端缓存』,Redis6算是把缓存玩明白了…

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是没更新就是在家忙着带娃的Hydra. 在前面介绍两级缓存的文章中,我们总共给出了4种实现方案,在项目中整合了本地缓存Caffe ...

  4. 为什么建议大家使用 Linux 开发?

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ Linux 能用吗? 我身边还有些朋友对 linux 的印象似乎还停留在黑乎乎的命令行界面上. ...

  5. c++动态内存分配需要注意的地方,可以不用尽量不用

    在实际开发中,需要动态分配内存的场景极少,string和vector已经足够方便,如果不是非用不可的情况,采用动态分配内存就是给自己挖坑. 如果应用开发中一定要用动态内存分配技术,建议把它封装在类中, ...

  6. 网络协议之:sctp流控制传输协议

    目录 简介 TCP有什么不好 sctp的特点 总结 简介 要讲网络协议,肯定离不开OSI(Open System Interconnection)的七层模型. 我们一般关注的是网络层之上的几层,比如I ...

  7. 认识并安装WSL

    认识并安装WSL(基于Windows的Linux子系统) 什么是WSL WSL(Windows Subsystem for Linux),这是在windows平台运行的linux子系统.也就是说可是不 ...

  8. ApeForms | WinForm窗体UI美化库(Metro扁平风格)演示与安装

    ApeForms系列① 快速上手 @ 目录 ApeForms系列① 快速上手 前言 演示视频 快速上手 安装及使用 Demo下载 联系开发者 加入我们 建议与咨询 前言 ApeForms是一套基于Wi ...

  9. unittest自动化测试框架核心要素以及应用

    1. unittest核心要素 unittest介绍 测试框架,不仅仅用于单元测试 python自动的测试包 用法和django.test.TestCase类似 1.1.unitest介绍和核心要素 ...

  10. 【C++函数题目】重载完成Compare函数

    题目来源链接:https://www.dotcpp.com/oj/problem2008.html 题目讲解链接:http://6o2.cn/1yjJB2  题目描述 利用函数重载完成三个比较大小的C ...