统一风格
网站为了统一风格,和便捷的操作,像头部样式一般都是一样的,但是Thymeleaf是服务端渲染,不是前端可以异步请求,总是粘贴复制头部信息将是灾难性的问题。
公共的部分应该单独的文件
就像静态资源一样,应该是所有页面都访问一份,而不是每个页面都粘贴一份。
thymeleaf提供了解决的方法
在模板文件中,比如head.html,使用
<div th:fragment="topHeader">
...
</div>
需要引入的文件中,比如首页
<div th:insert="head::topHeader"></div>
就是这么简单,但是遇到的坑还是蛮多的。
- 第一次首先最好复制粘贴,不要手写。
因为<div th:fragment="topHeader">
中的"topHeader"双引号,手写的时候自动生成了汉字的符号,改了小半天。没有正确的对照,发现问题比较费时间。 - 这里的引用不会走请求,所以不需要编写controller,也不需要配置拦截器。之前还以为是Shiro拦截请求的问题。
- 原来的文件中的css文件样式都没有了,需要在新的页面上导入css文件。
- 引入css样式的方法
<link rel="stylesheet" type="text/css" href="headstyle.css" />
但是css文件会被拦截,放行
filterMap.put("/css/**","anon");