Thymeleaf:直接访问页面时无法加载js和css

时间:2017-09-25 08:33:55

标签: spring-boot spring-security thymeleaf

更新:更清楚地描述问题

我使用spring bootthymeleaf创建了一个Web应用程序,如果我打开登录页面然后登录,那么一切正常,然后前往管理模块或报告模块。

当我在浏览器中输入网址locahost:8080/send/kf/index(需要进行身份验证,但我对所有自定义过滤器具有开放访问权限)时,会发生proleam,页面加载时没有js和css。在调试模式下,我看到/send/kf被意外地放入路径中,如下所示。如果我访问localhost:8080/assets/avatars/avatar.png,我可以获取资源。

enter image description here

以下是我放置静态资源的文件夹结构。如何/send/kf自动添加到网址中,请帮我解决这个问题。谢谢! enter image description here

3 个答案:

答案 0 :(得分:1)

您可以在application.properties文件中使用spring.resources.static-locations

spring.resources.static-locations=classpath:/resources/css/

spring.mvc.static-path-pattern=/resources/**

这取自documentation

注意:可以从Spring Boot应用程序轻松地提供静态资源(如JavaScript或CSS),只需将它们放到源代码中的正确位置即可。默认情况下,Spring Boot从类路径中的资源提供静态内容,位于" / static" (或" / public")

答案 1 :(得分:0)

我找到了这个问题的解决方案。我不知道如何将/send/kf放入静态资源的url中,但我认为如果我将控制器映射放在根路径下,这个问题应该避免。我认为,网址是正确的,资源可以成功加载。

@Controller
public class ManualMessageController {

    @Autowired
    private MsgTemplateRepository msgTemplateRepository;

    @RequestMapping("/manualMsg")
    public String manualMsg(Model model){
        model.addAttribute("msgTemplateList", msgTemplateRepository.findByStatus(1));
        return "manualMessage";
    }
}

<强> 更新

正确的解决方案是在项目中使用绝对路径而不是相对路径。因此,将assets/css更改为/assets/css即可。

答案 2 :(得分:0)

使用/assets/代替assets/修复了问题,因为它是一个相对网址,应该被添加到现有网址的末尾。