Заменить фрагмент на странице thymeleaf
Имеется очень много страниц в которых присутствует повторяющиеся фрагменты типа head, footer и т.п и лишь изменяется контент. Такой подход, на мой взгляд, не продуктивный, поэтому я создал заготовку блоков:
<th:block th:fragment="idea" xmlns:th="http://www.thymeleaf.org">
<!-- Контент-1 -->
</th:block>
<th:block th:fragment="edit" xmlns:th="http://www.thymeleaf.org">
<!-- Контент-2 -->
</th:block>
Создал контроллер для обработки запросов
@Controller:
@GetMapping("/idea")
public String getIdeas(Model model){
model.addAttribute("message", "some content");
return "common/idea :: idea";
}
@GetMapping("/edit")
public String getEdit(Model model){
model.addAttribute("message", "some content");
return "common/idea :: edit";
}
Общий шаблон, можно сказать скелет
HTML Template:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<title>Главная</title>
<th:block th:insert="common/page :: head"/>
</head>
<body>
<!-- Header-->
<th:block th:insert="common/page :: header"/>
<!-- Content -->
<div class="content" id="replace">
*Тут хочу вставлять фрагменты*
</div><!-- /.content -->
<!-- Footer -->
<th:block th:insert="common/page :: footer"/>
</body>
</html>
Написал скрипт для обновления блока в скелете
JQuery:
$('#someHref').on('click', function (event){
$("#replace").load("/idea");
});
Но при таком подходе у меня не загружается ничего кроме данного куска(должен быть еще head, header, footer)
Однако если я добавлю в jq preventDefault() то не буду получать ответ от сервера, но увижу обновление блока без новой модели.
Я бы хотел понять с помощью чего лучше выполнять такие действия(замена блоков фрагментами при обращении к разным маппингам).
Ответы (1 шт):
Обычно веб-сайты имеют общие компоненты страницы, такие как верхний колонтитул, нижний колонтитул, меню и, возможно, многие другие. Эти компоненты страницы могут использоваться как в одном, так и в разных макетах. Существует два основных стиля организации макетов в проектах: включающий стиль (Thymeleaf Standard Layout System) и иерархический стиль (Thymeleaf Layout Dialect). Оба стиля можно легко использовать с Thymeleaf, не теряя при этом его самой большой ценности: естественного создания шаблонов.
Конкретно вам надо посмотреть иерархический стиль шаблонов. Линки к ресурсам на английском языке, но Google переведёт контент. То что я вижу на русском языке: Thymeleaf: пользовательский макет диалекта выглядит неплохо.
