This commit is contained in:
lunaticbum
2024-10-23 10:07:45 +09:00
parent c4001848fc
commit 69d2df4ac4
19 changed files with 513 additions and 81 deletions
+38 -1
View File
@@ -10,7 +10,16 @@ html {
margin: 1vh 1vw;
background: #202025ee;
}
#where{
table-layout: fixed;
}
.where_item {
display: table-cell;
}
body {
user-select: none;
-webkit-user-select: none;
align-content: center;
padding: 1vh 1vw;
background-image: url("data:image/svg+xml,<svg id='patternId' width='100%' height='100%' xmlns='http://www.w3.org/2000/svg'><defs><pattern id='a' patternUnits='userSpaceOnUse' width='45' height='51.96' patternTransform='scale(2) rotate(20)'><rect x='0' y='0' width='100%' height='100%' fill='%23202025ff'/><path d='M52.48 44.47a15 15 0 01-14.96 0 15 15 0 00-7.48 12.96M7.48 44.42a15 15 0 01-14.96 0M15 57.44c0-5.35-2.9-10.35-7.52-13.02a15 15 0 017.48-12.97M7.48 18.5a14.97 14.97 0 01-14.98-.03m15.02-.03A15 15 0 0115 5.47a15 15 0 00-4.4-10.62m23.8.05A15 15 0 0030 5.53a15 15 0 017.48 12.96 14.9 14.9 0 0015.02-.03m-22.5 13a15.13 15.13 0 017.52 13.01m-7.56-39a15 15 0 01-14.96 0M7.48 18.5a15 15 0 017.48 12.96 15 15 0 0015.04 0 15 15 0 017.48-12.96' stroke-width='3' stroke='%23ec914b8f' fill='none'/></pattern></defs><rect width='800%' height='800%' transform='translate(-38,-21.84)' fill='url(%23a)'/></svg>")
@@ -55,13 +64,41 @@ header {
display: flex;
position: relative;
}
#bottom {
float: right;
display: inline-block;
justify-content: space-between;
margin-left: auto;
grid-auto-flow: column;
grid-template-columns: 3fr;
position: absolute;
right: 30px;
}
#top {
float: left;
display: inline-block;
justify-content: space-between;
margin-left: auto;
grid-auto-flow: column;
grid-template-columns: 3fr;
position: absolute;
left: 30px;
}
h2 {
margin: 1vw;
}
#main_layer {
border-radius: 10px 10px 0px 10px;
padding: 10px;
margin: 1vw 1vh;
position: relative;
overflow-y: auto;
overflow-x: clip;
height: 70vh;
height: 68vh;
max-height: 68vh;
min-height: 8vh;
}
+18
View File
@@ -0,0 +1,18 @@
function onclickWrite(type, keyword, html) {
let title_field = document.getElementById('title_field')
var hasValues = true
if (hasValues) {
let data = {
'title': title_field.value,
'content': encodeURIComponent(html),
}
let uploadUrl = location.protocol + "//" + location.hostname + "/blog/post.ajax";
if(confirm(JSON.stringify(data) + "\n해당 내용으로\n유저 등록 하실??")) {
post(uploadUrl,type,JSON.stringify(data),keyword, function (resultData) {
alert(resultData)
})
} else {
}
}
}
@@ -51,14 +51,16 @@
</script>
</th:block>
<th:block layout:fragment="content" id="content">
<input id="title_layer" />
<div id="editor" ></div>
<div id="hashtag_layer">
<select > </select>
<input id="hashtag" />
</div>
<div id="controll_layer" >
<button onclick="save()">asdsad</button>
<div id="main_layer">
<input id="title_layer" />
<div id="editor" ></div>
<div id="hashtag_layer">
<select > </select>
<input id="hashtag" />
</div>
<div id="controll_layer" >
<button onclick="save()">asdsad</button>
</div>
</div>
</th:block>
</html>
@@ -7,6 +7,7 @@
<th:block layout:fragment="head" id="head">
<script type="text/javascript" th:src="@{https://code.jquery.com/jquery-3.5.1.min.js}" crossorigin="anonymous"></script>
<script type="text/javascript" th:src="@{/js/toast-ui.js}"></script>
<script type="text/javascript" th:src="@{/js/blog.js}"></script>
<link th:href="@{/css/blog.css}" rel="stylesheet" />
<link th:href="@{/css/toast-ui.css}" rel="stylesheet" />
<link th:href="@{/css/toast-ui-dark.css}" rel="stylesheet" />
@@ -63,12 +64,12 @@
addImageBlobHook: (blob, callback) => {
const formData = new FormData();
formData.append('file', blob);
let url = 'post/images/';
let uploadUrl = location.protocol + "//" + location.hostname + "/blog/post/imageUpload";
let imageUrl = location.protocol + "//" + location.hostname + '/blog/post/images/';
$.ajax({
type: 'POST',
enctype: 'multipart/form-data',
url: 'post/imageUpload',
url: uploadUrl,
data: formData,
dataType: 'json',
processData: false,
@@ -76,8 +77,8 @@
cache: false,
timeout: 600000,
success: function (data) {
url += data.fileName;
callback(url, '사진 대체 텍스트 입력');
imageUrl += data.fileName;
callback(imageUrl, '사진 대체 텍스트 입력');
},
error: function (e) {
callback('image_load_fail', '사진 대체 텍스트 입력');
@@ -89,20 +90,27 @@
}
function save() {
console.log(editor.getHTML())
console.log(editor.getMarkdown())
onclickWrite([[${enc}]],[[${keyword}]],editor.getMarkdown())
}
</script>
</th:block>
<th:block layout:fragment="content" id="content">
<div id="main_layer">
<div class="layer">
<input id="title_layer" />
</div>
<div id="editor" ></div>
<div class="layer">
<select > </select>
<input id="hashtag" />
<button id="save" onclick="save()">asdsad</button>
</div>
<th:block th:if="${PERMISSION != 'OK'}">
<h1>권한이 없는 뎁쇼?!</h1>
</th:block>
<th:block th:if="${PERMISSION == 'OK'}">
<div class="layer">
<input id="title_field" />
</div>
<div id="editor" ></div>
<div class="layer">
<select > </select>
<input id="hashtag_field" />
<button id="save" onclick="save()">asdsad</button>
</div>
</th:block>
</div>
</th:block>
</html>
+8 -18
View File
@@ -1,22 +1,12 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/default_layout}">
<html
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/default_layout}">
<th:block layout:fragment="head">
<title>Spring Boot</title>
<!--/* css */-->
<link th:href="@{/css/common.css}" rel="stylesheet" />
</th:block>
<body>
<th:block layout:fragment="header" th:include="@{fragments/header}"></th:block>
<div layout:fragment="content" class="content">
<h2>This is Content</h2>
</div>
<th:block layout:fragment="footer" th:include="@{fragments/footer}"></th:block>
</body>
</html>
<th:block layout:fragment="content" id="content">
<div id="main_layer"></div>
</th:block>
</html>
@@ -0,0 +1,151 @@
<!DOCTYPE html>
<html
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/default_layout}"
>
<th:block layout:fragment="head">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js" crossorigin="anonymous"></script>
<script type="text/javascript" th:src="@{/js/toast-ui-view.js}"></script>
<link th:href="@{/css/toast-ui.css}" rel="stylesheet" />
<link th:href="@{/css/toast-ui-dark.css}" rel="stylesheet" />
<script th:inline="javascript">
let editor
let onChange = () => {console.log(editor.getMarkdown())}
document.addEventListener("DOMContentLoaded", onLoaded);
function onLoaded() {
var h = document.querySelector('#main_layer').getBoundingClientRect().height + 'px'
editor = new toastui.Editor({
el: document.querySelector('#editor'),
height: '500px',
width:'100%',
viewer: true,
usageStatistics : false,
initialValue:
"\n" +
"#lun\n" +
"##Dependency License Report\n" +
"_2024-10-22 15:24:32 KST_\n" +
"## Apache License, Version 2.0\n" +
"\n" +
"**1** **Group:** `com.drewnoakes` **Name:** `metadata-extractor` **Version:** `2.19.0` \n" +
"> - **POM Project URL**: [https://drewnoakes.com/code/exif/](https://drewnoakes.com/code/exif/)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"\n" +
"**2** **Group:** `com.fasterxml.jackson.module` **Name:** `jackson-module-kotlin` **Version:** `2.17.2` \n" +
"> - **Project URL**: [https://github.com/FasterXML/jackson-module-kotlin](https://github.com/FasterXML/jackson-module-kotlin)\n" +
"> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **Embedded license files**: [jackson-module-kotlin-2.17.2.jar/META-INF/LICENSE](jackson-module-kotlin-2.17.2.jar/META-INF/LICENSE) \n" +
" - [jackson-module-kotlin-2.17.2.jar/META-INF/NOTICE](jackson-module-kotlin-2.17.2.jar/META-INF/NOTICE)\n" +
"\n" +
"**3** **Group:** `com.google.code.gson` **Name:** `gson` **Version:** `2.11.0` \n" +
"> - **Manifest Project URL**: [https://github.com/google/gson](https://github.com/google/gson)\n" +
"> - **Manifest License**: \"Apache-2.0\";link=\"https://www.apache.org/licenses/LICENSE-2.0.txt\" (Not Packaged)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"\n" +
"**4** **Group:** `io.projectreactor.kotlin` **Name:** `reactor-kotlin-extensions` **Version:** `1.2.3` \n" +
"> - **POM Project URL**: [https://github.com/reactor/reactor-kotlin-extensions](https://github.com/reactor/reactor-kotlin-extensions)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"\n" +
"**5** **Group:** `nz.net.ultraq.thymeleaf` **Name:** `thymeleaf-layout-dialect` **Version:** `3.3.0` \n" +
"> - **POM Project URL**: [https://github.com/ultraq/thymeleaf-layout-dialect/](https://github.com/ultraq/thymeleaf-layout-dialect/)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"\n" +
"**6** **Group:** `org.apache.tomcat.embed` **Name:** `tomcat-embed-jasper` **Version:** `10.1.30` \n" +
"> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)\n" +
"> - **POM Project URL**: [https://tomcat.apache.org/](https://tomcat.apache.org/)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **Embedded license files**: [tomcat-embed-jasper-10.1.30.jar/META-INF/LICENSE](tomcat-embed-jasper-10.1.30.jar/META-INF/LICENSE) \n" +
" - [tomcat-embed-jasper-10.1.30.jar/META-INF/NOTICE](tomcat-embed-jasper-10.1.30.jar/META-INF/NOTICE)\n" +
"\n" +
"**7** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-reflect` **Version:** `1.9.25` \n" +
"> - **POM Project URL**: [https://kotlinlang.org/](https://kotlinlang.org/)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"\n" +
"**8** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib` **Version:** `1.9.25` \n" +
"> - **POM Project URL**: [https://kotlinlang.org/](https://kotlinlang.org/)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"\n" +
"**9** **Group:** `org.jetbrains.kotlinx` **Name:** `kotlinx-coroutines-reactor` **Version:** `1.8.1` \n" +
"> - **POM Project URL**: [https://github.com/Kotlin/kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"\n" +
"**10** **Group:** `org.slf4j` **Name:** `jcl-over-slf4j` **Version:** `2.0.16` \n" +
"> - **Project URL**: [http://www.slf4j.org](http://www.slf4j.org)\n" +
"> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)\n" +
"> - **Embedded license files**: [jcl-over-slf4j-2.0.16.jar/META-INF/LICENSE.txt](jcl-over-slf4j-2.0.16.jar/META-INF/LICENSE.txt)\n" +
"\n" +
"**11** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-data-mongodb-reactive` **Version:** `3.3.4` \n" +
"> - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **Embedded license files**: [spring-boot-starter-data-mongodb-reactive-3.3.4.jar/META-INF/LICENSE.txt](spring-boot-starter-data-mongodb-reactive-3.3.4.jar/META-INF/LICENSE.txt) \n" +
" - [spring-boot-starter-data-mongodb-reactive-3.3.4.jar/META-INF/NOTICE.txt](spring-boot-starter-data-mongodb-reactive-3.3.4.jar/META-INF/NOTICE.txt)\n" +
"\n" +
"**12** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-security` **Version:** `3.3.4` \n" +
"> - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **Embedded license files**: [spring-boot-starter-security-3.3.4.jar/META-INF/LICENSE.txt](spring-boot-starter-security-3.3.4.jar/META-INF/LICENSE.txt) \n" +
" - [spring-boot-starter-security-3.3.4.jar/META-INF/NOTICE.txt](spring-boot-starter-security-3.3.4.jar/META-INF/NOTICE.txt)\n" +
"\n" +
"**13** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-quartz` **Version:** `3.3.4` \n" +
"> - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **Embedded license files**: [spring-boot-starter-quartz-3.3.4.jar/META-INF/LICENSE.txt](spring-boot-starter-quartz-3.3.4.jar/META-INF/LICENSE.txt) \n" +
" - [spring-boot-starter-quartz-3.3.4.jar/META-INF/NOTICE.txt](spring-boot-starter-quartz-3.3.4.jar/META-INF/NOTICE.txt)\n" +
"\n" +
"**14** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-thymeleaf` **Version:** `3.3.4` \n" +
"> - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **Embedded license files**: [spring-boot-starter-thymeleaf-3.3.4.jar/META-INF/LICENSE.txt](spring-boot-starter-thymeleaf-3.3.4.jar/META-INF/LICENSE.txt) \n" +
" - [spring-boot-starter-thymeleaf-3.3.4.jar/META-INF/NOTICE.txt](spring-boot-starter-thymeleaf-3.3.4.jar/META-INF/NOTICE.txt)\n" +
"\n" +
"**15** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-webflux` **Version:** `3.3.4` \n" +
"> - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **Embedded license files**: [spring-boot-starter-webflux-3.3.4.jar/META-INF/LICENSE.txt](spring-boot-starter-webflux-3.3.4.jar/META-INF/LICENSE.txt) \n" +
" - [spring-boot-starter-webflux-3.3.4.jar/META-INF/NOTICE.txt](spring-boot-starter-webflux-3.3.4.jar/META-INF/NOTICE.txt)\n" +
"\n" +
"**16** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-web` **Version:** `3.3.4` \n" +
"> - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **Embedded license files**: [spring-boot-starter-web-3.3.4.jar/META-INF/LICENSE.txt](spring-boot-starter-web-3.3.4.jar/META-INF/LICENSE.txt) \n" +
" - [spring-boot-starter-web-3.3.4.jar/META-INF/NOTICE.txt](spring-boot-starter-web-3.3.4.jar/META-INF/NOTICE.txt)\n" +
"\n" +
"## LGPL-2.1\n" +
"\n" +
"**17** **Group:** `org.mariadb.jdbc` **Name:** `mariadb-java-client` **Version:** `3.3.3` \n" +
"> - **Project URL**: [https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/](https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/)\n" +
"> - **Manifest License**: \"LGPL-2.1\" (Not Packaged)\n" +
"> - **POM License**: LGPL-2.1\n" +
"\n" +
"## MIT License\n" +
"\n" +
"**18** **Group:** `org.jsoup` **Name:** `jsoup` **Version:** `1.18.1` \n" +
"> - **Project URL**: [https://jsoup.org/](https://jsoup.org/)\n" +
"> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)\n" +
"> - **Embedded license files**: [jsoup-1.18.1.jar/META-INF/LICENSE](jsoup-1.18.1.jar/META-INF/LICENSE) \n" +
" - [jsoup-1.18.1.jar/META-INF/README.md](jsoup-1.18.1.jar/META-INF/README.md)\n" +
"\n" +
"**19** **Group:** `org.slf4j` **Name:** `jcl-over-slf4j` **Version:** `2.0.16` \n" +
"> - **Project URL**: [http://www.slf4j.org](http://www.slf4j.org)\n" +
"> - **Manifest License**: Apache License, Version 2.0 (Not Packaged)\n" +
"> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n" +
"> - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)\n" +
"> - **Embedded license files**: [jcl-over-slf4j-2.0.16.jar/META-INF/LICENSE.txt](jcl-over-slf4j-2.0.16.jar/META-INF/LICENSE.txt)\n" +
"\n" +
"\n"
,
theme:"dark",
});
}
</script>
</th:block>
<th:block layout:fragment="content" id="content">
<div id="main_layer" style="background:#30303594;">
<div id="editor" ></div>
</div>
</th:block>
</html>
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/default_layout}">
<th:block layout:fragment="head">
</th:block>
<th:block layout:fragment="content" id="content">
<table id="main_layer">
<tr id="where" th:each="location : ${locations}">
<td class="where_item"><span th:text="${location.timeString}"></span></td>
<td class="where_item"><span th:text="${location.mAddressLines}"></span></td>
<td class="where_item"><span th:text="${location.mCountryName}"></span></td>
<td class="where_item"><span th:text="${location.mLatitude}"></span></td>
<td class="where_item"><span th:text="${location.mLongitude}"></span></td>
</tr>
</table>
</th:block>
</html>
@@ -1,6 +1,13 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="footer">
<footer></footer>
<footer>
<table >
<tr id="bottom">
<td><h2><a aria-label="licenses" style="color: white" href="../licenses" title="Gmail">licenses</a></h2></td>
<td><h2><a aria-label="sendToMe" style="color: white" href="mailto:lunaticbum@gmail.com" title="Gmail">lunaticbum@gmail.com</a></h2></td>
</tr>
</table>
</footer>
</th:block>
</html>
@@ -2,7 +2,11 @@
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="header">
<header>
<table >
<tr id="top">
<td><h2><a aria-label="licenses" style="color: white" href="../" title="Gmail">HOME</a></h2></td>
</tr>
</table>
</header>
</th:block>
</html>
@@ -8,5 +8,6 @@
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1"/>
<link th:href="@{/css/common.css}" rel="stylesheet" />
<script type="text/javascript" th:src="@{/js/common.js}"></script>
<script async th:src="@{https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9504446465764716}" crossorigin="anonymous"></script>
</th:block>
</html>
@@ -5,20 +5,21 @@
xmlns="http://www.w3.org/1999/html">
<head>
<!-- <th:block layout:replace="fragments/includes" ></th:block>-->
<th:block th:replace="fragments/includes :: includes"></th:block>
<th:block th:replace="~{fragments/includes :: includes}"></th:block>
<!-- layout:fragment="head" -->
<th:block layout:fragment="head"></th:block>
<!-- <th:block layout:replace="fragments/title" ></th:block> -->
<th:block th:replace="fragments/title :: title"></th:block>
<th:block th:replace="~{fragments/title :: title}"></th:block>
</head>
<body>
<!--<th:block th:replace="fragments/header :: header"></th:block>-->
<th:block th:replace="fragments/header :: header"></th:block>
<th:block th:replace="~{fragments/header :: header}"></th:block>
<!--<th:block layout:fragment="content"></th:block>-->
<th:block layout:fragment="content"></th:block>
<!--<th:block th:replace="fragments/footer :: footer"></th:block>-->
<th:block th:replace="fragments/footer :: footer"></th:block>
<th:block th:replace="~{fragments/footer :: footer}"></th:block>
</body>
</html>