LuoXuanwei 2022-10-31 22:06 采纳率: 71.4%
浏览 7

ssm中运用thymeleaf触发接口时报错FileNotFoundException,前端报错500,thymeleaf访问了本不该存在的html文件

问题遇到的现象和发生背景

刚学完ssm,想将前段时间做的小项目优化一下,教学老师教了thymeleaf我觉得很好用,但是却发现只要是通过a标签触发的接口都会报500错误,但是相关的接口后端却执行完了。以下是一个点赞的功能,写好的页面是用a标签来访问点赞按钮功能,后端确确实实成功将数据保存到数据库,也就是对应接口确实执行成功了,但是后端最后还是报了java.io.FileNotFoundException,前端也因为报500的错误导致后面的效果全部失效了。我的初衷是点击a标签实现后端保存点赞的数据,但是thymeleaf却去访问了本不该存在的html文件

运行结果及报错内容

img

img

我的解答思路和尝试过的方法

我唯一的解决思路只能将前端的a标签全部改了,但是目前我前端有很多a标签,我过几天要用这个项目做一些事情,可能改不过来这么多a标签,因为其中有一些还包含了css和js。求有没有限制thymeleaf去访问静态资源的方法,防止thymeleaf去访问本不该存在的html。

我想要达到的结果

不改前端代码a标签的情况下解决这个问题

  • 写回答

1条回答 默认 最新

  • WaitIKnowYou 2022-10-31 22:22
    关注
    
    首先修改HTML页面对静态资源文件的访问路径。
    
    (1)在HTML的头部添加thymeleaf的标记
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    (2)修改网页文档中的对静态资源的引用,语法规则如下:
    命令格式:   
    th:href="@{/static/.....}"
     
    命令用法:
    <link rel="stylesheet"  th:href="@{/static/vendor/bootstrap/css/bootstrap.min.css}">
    1.在IDEA中测试路径写法是否正确是按住Ctrl键并用鼠标左键点击,若能跳转到资源则说明路径正确。
    2.th:href 替换的是href属性,相对应的还有src,可以使用th:src=“@{/static/....}”进行替换
    
    试试扩展MVC
    我们需要对springMVC进行扩展配置则需要继承WebMvcConfigurationSupport
    创建SpringMVC配置扩展类,并继承WebMvcConfigurationSupport类。
    
    重写方法
    重写方法addResourceHandlers,将其中的请求映射路径做修改。
    
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
         // 将url为 /static/** 的请求映射到 /static/ 路径下进行查找
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
    

    配置文件放行静态资源

    评论

报告相同问题?

问题事件

  • 创建了问题 10月31日