关于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( ...
随机推荐
- XCTF练习题---MISC---Test-flag-please-ignore
XCTF练习题---MISC---Test-flag-please-ignore flag:flag{hello_world} 解题步骤: 1.观察题目,下载附件 2.打开文件,发现又是一个没有名字的 ...
- Jenkins 自动化部署详解
一.背景 以前在发布系统的时候,总是需要经过本地合并代码 >编译 >发布到本地 >拷贝代码到远程服务器 >停止掉服务器上的应用池 >将要发布的文件替换原文件 >重启 ...
- Lab_1:练习1——理解通过make生成执行文件的过程
lab_0 清华大学ucore实验环境配置详细步骤!(小白入) lab_1 清华大学ucore bootload启动ucore os(预备知识) Lab_1:练习1--理解通过make生成执行文件的过 ...
- Linux 多网卡bonding
bonding 将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡.直接给两块网卡设置同一IP 地址是不可以的.通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的 ...
- Windows常用cmd命令总结
cmd是command的缩写,即命令提示符. 运行操作: 使用"Win+R"快捷键召唤出运行窗口,再在运行中输入cmd即可. 1.ping 用法: 常用举例: ping www.g ...
- Hadoop配置与安装
基础配置 1.关闭防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止fir ...
- 第6组 Beta冲刺 总结
目录 1. 基本情况 2. 思考与总结 2.1. 设想和目标 2. 计划 3. 资源 4. 变更管理 5. 设计/实现 6. 测试/发布 7. 团队的角色,管理,合作 8. 总结 3. 敏捷开发 1. ...
- 详解SQL操作的窗口函数
摘要:窗口函数是聚集函数的延伸,是更高级的SQL语言操作,主要用于AP场景下对数据进行一些分析.汇总.排序的功能. 本文分享自华为云社区<GaussDB(DWS) SQL进阶之SQL操作之窗口函 ...
- String 为什么不可变?
转载来源:String为什么不可变 今天来分享一道群友去阿里云面试遇到的 Java 基础面试真题:"String.StringBuffer.StringBuilder 的区别?String ...
- Hive参数与性能企业级调优
Hive作为大数据平台举足轻重的框架,以其稳定性和简单易用性也成为当前构建企业级数据仓库时使用最多的框架之一. 但是如果我们只局限于会使用Hive,而不考虑性能问题,就难搭建出一个完美的数仓,所以Hi ...