Доставка CSS через контроллер не работает при загрузке - PullRequest
0 голосов
/ 15 мая 2018

Я использую 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";

Теперь я открываю свое приложение вбраузер и макет полностью утерян.Я вижу своего рода текстовую версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...