Я использую Spring-Boot, и у меня проблема с настройкой макета для моих веб-представлений.
Поскольку у пользователя есть возможность выбрать желаемый макет в бэкэнде, соответствующий файл CSS доставляетсяконтроллер:
@Controller
@RequestMapping("/web")
public class LayoutController {
private UiLayoutSettings settings;
@Autowired
public LayoutController(SettingsService settingsService) {
settings = settingsService.getSettings().getUiLayoutSettings();
}
@RequestMapping(value = "/style.css", method = RequestMethod.GET, produces = "text/css")
@ResponseBody
public String getSelectedLayout() {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
URL url = cl.getResource("static/css/" + settings.getFileName());
String text = "";
String line = "";
try {
try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) {
while ((line = br.readLine()) != null) {
text += line + "\n";
}
}
} catch (IOException e) {
}
return text;
}
}
Если я позвоню по адресу
mydomain.com/web/style.css
в своем браузере, я получу ответ с правильным содержанием.
Теперь я настроил свой jsp:
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<%@taglib prefix="uv" tagdir="/WEB-INF/tags" %>
<html>
<head>
<uv:head/>
</head>
И мой head.tag выглядит следующим образом:
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1"/>
<title>My app</title>
<link rel="stylesheet" type="text/css" href="/web/style.css" />
И, наконец, это мой css:
@import "fonts.css";
@import "colors.css";
@import "actions.css";
@import "print.css";
@import "error.css";
Теперь я открываю свое приложение вбраузер и макет полностью утерян.Я вижу своего рода текстовую версию.