application.properties配置文件
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=LEGACYHTML5
#spring.thymeleaf.encoding=UTF-8
#spring.thymeleaf.content-type=text/html # charset=<encoding>is added
spring.thymeleaf.cache=false
springboot使用thymeleaf时报html没有结束标签
在使用springboot的过程中,如果使用thymeleaf作为模板文件,则要求HTML格式必须为严格的HTML5格式,必须有结束标签,否则会报错!解决办法如下:
1、你可以使用严格的标签,也就是每个标签都有结束标签,这种可能比较麻烦
2、在application.properties中增加spring.thymeleaf.mode=LEGACYHTML5,即声明thymeleaf使用非严 格的html。
maven依赖如下
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
现在就可以正常访问了。
希望对你有帮助~
1.1 th:id
替换id标签
1.2 th:text
文本替换,包括html标签
1.3 th:utext
文本替换,html标签会显示出正确的样式
1.4 th:object
替换对象, 用于表单数据对象绑定,将表单绑定到后台controller的一个JavaBean参数。常与th:field一起使用进行表单数据绑定。
1.5 th:value
属性赋值
1.6 th:with
定义局部变量。
当th:with被处理,firstPer变量创建一个局部变量和变量添加到map自上下文, 以便它是用于评估和其他上下文中声明的变量从开始,但只有包含<div >标记的范围内。
定义多个局部变量
1.7 th:style
设置样式
1.8 th:onclick
点击事件
1.9 th:each
属性赋值
1.10 th:if
判断条件
1.11 th:unless
和th:if判断相反
1.12 th:href
链接地址
1.13 th:switch
多路选择配合th:case使用
1.14 th:fragment
自定义片段,定义fragment,所有的fragment可以写在一个文件里面,也可以单独存在
1.15 th:insert
保留自己的主标签,保留th:fragment的主标签。
1.16 th:replace
不要自己的主标签,保留th:fragment的主标签。
1.17 th:include
保留自己的主标签,不要th:fragment的主标签。(官方3.0后不推荐)
结果为:
1.18 th:selectd
selected选择框选中
1.19 th:src
图片类地址引入
1.20 th:inline
定义js脚本可以使用变量
1.21 th:action
表单提交的地址
1.22 th:remove
删除某个属性
1.all:删除包含标签和所有的孩子。
2.body:不包含标记删除,但删除其所有的孩子。
3.tag:包含标记的删除,但不删除它的孩子。
4.all-but-first:删除所有包含标签的孩子,除了第一个。
5.none:什么也不做。这个值是有用的动态评估。
1.23 th:attr
设置标签属性,多个属性可以用逗号分隔
$ {...} 变量表达式,可用于获取后台传过来的值
* {...} 选择变量表达式
#{...} 消息表达式
@ {...} 链接⽹址表达式,用于替换网页中的 src、href 等的值
〜{...} ⽚段表达式,可以用于引用公共的目标片段
@{...} 处理 url 地址
Thymeleaf 的 @ {...} 表达式用于处理 web 应用中的 url 地址,可以是相对地址,也可以是绝对地址。
@{/} 斜杠开头表示相对整个应用根目录,"/" 表示 "/应用上下文路径"
假如页面当前浏览器地址为:http://localhost/thymeleaf/user/userHome,其中 thymeleaf 表示应用上下文路径,user/userHome 为后台请求路径,则常用的写法如下:
1)@{userList} 相对当前路径结果为:http://localhost/thymeleaf/user/userList
2)@{./userList} 相对当前路径结果为:http://localhost/thymeleaf/user/userList
3)@{../tiger/home} 相对当前路径结果为:http://localhost/thymeleaf/tiger/home
4)@{/tiger/home} 相对应用根目录结果为:http://localhost/thymeleaf/tiger/home
5)@{https://www.baidu.com/} 绝对路径结果为:https://www.baidu.com
6)<link type="text/css" rel="stylesheet" th:href="@{/css/home.css}">,@ 以 "/" 开头相对应用根目录,否则是相对当前路径。
@{...} 携带参数
th:href 是⼀个修饰符属性,将表达式结果设置为标签 href 属性的值,请求地址中携带参数传往服务器是很常见的 *** 作,常用 *** 作如下:
1)在 @{...}表达式末尾使用 "()" 设置参数;
2)多个参数时,使用 "," 隔开
3)参数值可以使用表达式动态取值。
文本及其 *** 作
⽂本⽂字指包含在单引号之间的字符串,它们可以包含任何字符,但如果字符串有空格时,必须使用单引号" ' "包含。
字符串追加
⽆论是字符串⽂本常量,还是通过变量表达式或消息表达式计算的结果,都可以使⽤ "+" 运算符轻松地追加⽂本。
数字字⾯量
布尔字⾯量
布尔字⾯量包含 true 和 false:
NULL 字⾯量
算术运算符
Thyme Leaf 标准表达式⽀持算术运算:+, - ,*,/(除),%(取余)
⽐较/逻辑运算符
表达式中的值可以与 >,<,>= ,<= ,==,!= 符号进⾏⽐较。 ⼀个更简单的替代⽅案是使⽤这些运算符的⽂本别名:gt(>),lt(<),ge(>=),le(<=),eq(==),neq(!=)。
逻辑运算符:and(与)、or(或)、!(非),not(非)
三元运算符
Thymeleaf 中的三元运算与 Java 以及 JavaScript 中基本一致,如 A>B?X:Y,在 X、Y 中可以继续嵌套,只是 Thymeleaf 中需要使用括号包含起来,否则报错。
如果原先有 @Bean(name="xxx") 直接用方法名即可(我原先的 name 和方法名不一样就很尴尬)
hashedCredentialsMatcher 中的内容可以直接 new ,所以不需要注入
如果SpringBoot的版本从 1.5.x 变成了 2.0.x , shiroDialect 或者 shiroFilter 可能会报如下错误
把 thymeleaf-extras-shiro 的版本号改成 2.0.0 即可(原先是 1.2.1 )
在 SpringBoot 版本中,在 Realm 中注入 Service 时,为了启用缓存,需要在前面加上 @Lazy 注解,如下
在 Kotlin 版本中我不知道发了啥疯就把它去掉了(可能是看到前面类型是 lateinit var ,自以为是的觉得可以代替 @Lazy ),然后改成了改成如下形式
拷贝完整个项目之后,测试功能的时候,发现缓存没了……然后就开始疯狂DEBUG,从版本问题,到 jar 包冲突问题,经历了很漫长的一段时间后,我定位到了 ShiroConfiguration ,只要把 shiro aop 注解关闭就可以开启缓存了
WHAT??
疯狂谷歌一个小时无果(因为一直以为是 Kotlin 不兼容啥的,或者是 shiro 在 boot2.x 之后需要修改相应的配置)
然后又疯狂DEBUG,把 Kotlin 版和 springboot 版进行对比,最后。定位到了 @Lazy (还好只是改成了注释,没把它给直接删了)
果然。加了 @Lazy ,整个天都亮了
最后顺便提一句 Realm 认证超级管理员的问题,可以直接在 Realm 中加上超级管理员的特别认证,就不用去方法级别上区分这个权限可以超级管理和XX管理员都可用了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)