Thymeleaf с Spring Boot и Bootstrap не работают на странице с PathVariable - PullRequest
0 голосов
/ 22 октября 2019

У меня есть приложение, работающее с Spring Boot 2.1.9.RELEASE, Thymeleaf и Boostrap 4.

1) У меня есть страница base.html, которая используется для шаблона:

<!DOCTYPE html>
<html lang="pt-br"
      xmlns:th="http://www.w3.org/1999/xhtml"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
    <!-- Meta tags Obrigatórias -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="../static/css/bootstrap.min.css" th:href="@{css/bootstrap.min.css}">
    <link rel="stylesheet" href="../static/css/custom.css" th:href="@{css/custom.css}">

    <title th:text="${config.dashboardTitle}">None</title>
</head>
<body>
<div class="container">

    <div class="row">
        <div class="col-md-12">
            <th:block layout:fragment="page_content">PUT CONTENT HERE</th:block>
        </div>
    </div>

</div> <!-- /container -->
<script src="../static/js/jquery-3.3.1.slim.min.js" th:src="@{js/jquery-3.3.1.slim.min.js}"></script>
<script src="../static/js/popper.min.js" th:src="@{js/popper.min.js}"></script>
<script src="../static/js/bootstrap.min.js" th:src="@{js/bootstrap.min.js}"></script>
</body>
</html>

Как вы можете видеть на этой странице, у меня есть сценарии и таблица стилей для начала использования bootstrap 4, и все работает отлично.

2) У меня есть маршрут /register-application, поэтому, когда пользователь вызывает этот маршрут, этот метод контроллера запускается:

 @GetMapping("/register-application")
    public String registerApp(Model model) {
        loadDefaultModelConfig(model);
        model.addAttribute("application", new ApplicationMonitor());
        return "register-application";
    }

Мой register-application.html отображается с загрузкой, работающей очень хорошо, смотритестраница:

<!DOCTYPE html>
<html lang="pt-br"
      xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      layout:decorate="~{base}">
<head>
</head>
<th:block layout:fragment="page_content">
    <div class="row">
        <div class="col-md-12">
            <form action="#" th:action="@{/register-application}" th:object="${application}" method="post">
                 <div class="form-group">
                    <label for="nameApp">Nome</label>
                    <input th:field="*{name}" type="text" class="form-control" id="nameApp" placeholder="Digite o nome da sua aplicação">
                </div>
                <button class="btn btn-outline-success" type="submit">Salvar</button>
            </form>
        </div>
    </div>
</th:block>
</html>

Теперь пользователю необходимо обновить уже созданное приложение, поэтому он вызывает /register-application/{guid}, и этот метод запускается:

@GetMapping("/register-application/{guid}")
    public String registerApp(Model model, @PathVariable("guid") String guid) {
        loadDefaultModelConfig(model);
        model.addAttribute("application", applicationMonitorRepository.getOne(guid));
        return "register-application";
    }

Страница, отображаемая точноТо же самое (register-application.html), но по какой-то причине загрузчик не отображается правильно, я получил много ошибок 404 в скриптах и ​​таблицах стилей, которые необходимы для начальной загрузки.

1 Ответ

1 голос
/ 22 октября 2019

Я думаю, что ведущий / отсутствует. Попробуйте:

<script type="text/javascript" th:src="@{/js/jquery-3.3.1.slim.min.js}"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...