关于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练习题---CRYPTO---不仅仅是Morse
XCTF练习题---CRYPTO---不仅仅是Morse flag:cyberpeace{attackanddefenceworldisinteresting} 解题步骤: 1.观察题目,下载附件 2 ...
- [STL] stack 栈
在出栈时需要进行两步操作,即先 top( ) 获得栈顶元素,再 pop( ) 删除栈顶元素
- 1 Mybatis动态SQL
Mybatis动态SQL 1. 注解开发 我们也可以使用注解的形式来进行开发,用注解来替换掉xml. 使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从 ...
- ASP.NET Core + SaasKit + PostgreSQL + Citus 的多租户应用程序架构示例
在 确定分布策略 中, 我们讨论了在多租户用例中使用 Citus 所需的与框架无关的数据库更改. 当前部分研究如何构建与 Citus 存储后端一起使用的多租户 ASP.NET 应用程序. http:/ ...
- @Inherited 原注解功能介绍
@Inherited 底层 package java.lang.annotation; /** * Indicates that an annotation type is automatically ...
- 基于.NetCore开发博客项目 StarBlog - (6) 页面开发之博客文章列表
系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...
- ElasticSearch基础学习(SpringBoot集成ES)
一.概述 什么是ElasticSearch? ElasticSearch,简称为ES, ES是一个开源的高扩展的分布式全文搜索引擎. 它可以近乎实时的存储.检索数据:本身扩展性很好,可以扩展到上百台服 ...
- vue设计模式
vm 的设计模式. mvvm 是 model-view-viewModel 的简写. model 是数据模块,view 是渲染视图,viewModel 是沟通视图和数据模块的桥梁. vue 中使用了哪 ...
- java接口多实现注入方法总结
1. 单实现接口注入方法 1.1 构造注入(推荐) @RequiredArgsConstructor public class TestController { // 其只有一个具体的实现类 priv ...
- 碎碎念软件研发02:敏捷之Scrum
一.什么是 Scrum 1.1 Scrum 定义 Scrum 是敏捷开发方法之一,它使用比较广泛. 敏捷的其它开发方法还有 XP(极限编程).FDD(特性驱动开发).Crystal(水晶方法).TDD ...