最近写SpringBoot项目时遇到的一个问题,在本地运行很正常,一点毛病都没有,直到package
打包部署到服务器上运行的时候就出现问题了,而且不是一个页面由这个的问题,经过网上多处查询,说Controller
层的返回页面方法要注意/
但是我的的确没有/
也报错了,于是我把关注点说定到Thymelefa
页面
在之前写项目的经验中我知道如果显示有关Thymeleaf的错误都逃不脱两个点
Controller
成的页面跳转方法错误
(如果方法里只是简单的写了一行return
的话,就可以断定是页面的问题了)Thymelefa
页面错误
(如果你的页面也没有报错或者是IDE编辑器误报的话,那么你可能和我遇到的是同一个问题)
正文
这是我的Controller.java
COPY
1 |
|
页面template\admin\index.html
由于html内如过多,我就只截取部分进行展示
COPY
1 |
|
从上面的html可以看出我的template\admin\
下因该有个public.html
公共html
COPY
1 | <!-- 引入页面头header-fragment --> |
这里使用 th:replace
引用 template\admin\public.html
下的header-nav
COPY
1 | <!-- 引入页面头header-fragment --> |
这也没问题,本地运行能正常显示,关键问题就在打jar包上,因为打jar包后目录结构有改变(可以自己用解压软件解压查看)
当你在admin
前面加上/
后,Thymelaf就会到根目录去找admin/public.html
(也就是绝对路径)
相对路径
- ../ 表示当前文件所在的目录的上一级目录
- ./ 表示当前文件所在的目录(可以省略)
绝对路径
- / 表示当前站点的根目录(根目录等价于
绝对路径
)
例如:D:\Lete\Project\src\main\resources\templates\admin\public.html
总结
只需要将admin
前面的/
去掉即可
COPY
1 | <!-- 引入页面头header-fragment --> |
这样就可以正常运行了
至于问什么在本地运行正常,这我也说不清楚
博主使用的是IDEA 2020
版
以后编写代码时要注意观察