更新:更清楚地描述问题
我使用spring boot
和thymeleaf
创建了一个Web应用程序,如果我打开登录页面然后登录,那么一切正常,然后前往管理模块或报告模块。
当我在浏览器中输入网址locahost:8080/send/kf/index
(需要进行身份验证,但我对所有自定义过滤器具有开放访问权限)时,会发生proleam,页面加载时没有js和css。在调试模式下,我看到/send/kf
被意外地放入路径中,如下所示。如果我访问localhost:8080/assets/avatars/avatar.png
,我可以获取资源。
答案 0 :(得分:1)
您可以在application.properties文件中使用spring.resources.static-locations
spring.resources.static-locations=classpath:/resources/css/
spring.mvc.static-path-pattern=/resources/**
注意:可以从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/
修复了问题,因为它是一个相对网址,应该被添加到现有网址的末尾。