我有一个基本的春季启动应用程序,我正在创建,我有一个管理员控制器,将给我一个/ admin / 的URL。我的问题是,这个URL会改变我访问静态资源的方式,方法是在URL上添加/ admin,而不是仅使用/ 。
我该怎么做才能仍然可以从/ admin / ** URL访问我的静态资源,因为它们来自/ ** URL?
返回错误的示例请求: 获取http://localhost:8080/admin/css/bootstrap.min.css
以上请求可以处理此请求: 获取http://localhost:8080/css/bootstrap.min.css
但我不知道在Thymeleaf或Spring中删除前缀的好动态解决方案。真的不想在每个HTML页面上添加不同的东西。
我如何访问HTML页面上的资源:
<link href="../../static/css/bootstrap.min.css"
th:href="@{css/bootstrap.min.css}" rel="stylesheet"/>
我如何为控制器中的URL添加前缀:
@Controller
@RequestMapping("/admin")
public class AdminController {
@Autowired
ModelAndViewService modelAndViewService;
@RequestMapping(value = "/developer", method = RequestMethod.GET)
public String developer(Model model, Authentication authentication) {
modelAndViewService.developerList(model,authentication);
return "admin/developerList";
}
}
我将此添加到我的WebMvcConfigurerAdapter以尝试解决问题:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**","/admin/**")
.addResourceLocations("/resources/");
}
任何帮助将不胜感激!希望这是一个简单的解决方案。
答案 0 :(得分:0)
答案在于Thymeleaf href。
$keyboard = array(
"inline_keyboard" => array(array(array("text" => "My Button Text", "callback_data" => "myCallbackData")))
);
对此进行了一些更改:
我的代码现在如下:
<link href="../../static/css/bootstrap.min.css"
th:href="@{css/bootstrap.min.css}" rel="stylesheet"/>
我已在整个应用程序中更改了此功能,它适用于所有不同的网址。无论请求URL是什么,prepended~都会使您的资源动态加载到从服务器返回的任何页面。
有关此内容的更多信息:Thymeleaf URL syntax document