ajax 저장, 수정 동작 시 클릭 방지&안내 문구 추가.
parent
dfd4250f47
commit
5f36826de4
|
|
@ -30,4 +30,22 @@
|
||||||
content: url("/img/bootstrap-icons-1.7.1/caret-down-fill.svg");
|
content: url("/img/bootstrap-icons-1.7.1/caret-down-fill.svg");
|
||||||
/*왜 안돌까?*/
|
/*왜 안돌까?*/
|
||||||
/*transform: rotate(90deg);*/
|
/*transform: rotate(90deg);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#fadeDiv{
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
background-color: #00000050;
|
||||||
|
z-index: 1090;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fadeDiv > div{
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
@ -96,6 +96,7 @@ $(document).on('click', '#saveCategoryBtn', function (){
|
||||||
})
|
})
|
||||||
if(saveList.length !== 0) {
|
if(saveList.length !== 0) {
|
||||||
if (confirm(saveList.length + "건을 저장하시겠습니까?")) {
|
if (confirm(saveList.length + "건을 저장하시겠습니까?")) {
|
||||||
|
contentFade("in");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
url : "/admin/insertCategory2",
|
url : "/admin/insertCategory2",
|
||||||
|
|
@ -109,7 +110,8 @@ $(document).on('click', '#saveCategoryBtn', function (){
|
||||||
sessionReload();
|
sessionReload();
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ $(document).on('click', '#allValueCheckBox', function (event){
|
||||||
$(document).on('click', '#saveBtn', function (){
|
$(document).on('click', '#saveBtn', function (){
|
||||||
if(valueCheck()){
|
if(valueCheck()){
|
||||||
if(confirm("저장하시겠습니까?")){
|
if(confirm("저장하시겠습니까?")){
|
||||||
|
contentFade("in");
|
||||||
const formData = new FormData($("#commonCodeForm")[0]);
|
const formData = new FormData($("#commonCodeForm")[0]);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
|
|
@ -55,9 +56,11 @@ $(document).on('click', '#saveBtn', function (){
|
||||||
alert("저장되었습니다.")
|
alert("저장되었습니다.")
|
||||||
$("#closeModalBtn").click();
|
$("#closeModalBtn").click();
|
||||||
categoryCheck(data.category);
|
categoryCheck(data.category);
|
||||||
|
contentFade("out");
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -76,6 +79,7 @@ $(document).on('click', '#deleteCommonCodeBtn', function (){
|
||||||
})
|
})
|
||||||
if(codeList.length !== 0){
|
if(codeList.length !== 0){
|
||||||
if(confirm(codeList.length+"건을 삭제하시겠습니까?")){
|
if(confirm(codeList.length+"건을 삭제하시겠습니까?")){
|
||||||
|
contentFade("in");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'PUT',
|
type : 'PUT',
|
||||||
url : "/admin/deleteCode",
|
url : "/admin/deleteCode",
|
||||||
|
|
@ -85,11 +89,12 @@ $(document).on('click', '#deleteCommonCodeBtn', function (){
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
},
|
},
|
||||||
success : function(data) {
|
success : function(data) {
|
||||||
alert("삭제되었습니다.");
|
alert("저장되었습니다.");
|
||||||
getValues($(".categoryCheckBox:checked").val());
|
getValues($(".categoryCheckBox:checked").val());
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ $(document).on('change', '#passwordUpdateFlag', function (){
|
||||||
$(document).on('click', '#saveBtn', function (){
|
$(document).on('click', '#saveBtn', function (){
|
||||||
if(valueCheck("userInfoInsert")){
|
if(valueCheck("userInfoInsert")){
|
||||||
if(confirm("저장하시겠습니까?")){
|
if(confirm("저장하시겠습니까?")){
|
||||||
|
contentFade("in");
|
||||||
const formData = new FormData($("#userInfoInsert")[0]);
|
const formData = new FormData($("#userInfoInsert")[0]);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
|
|
@ -56,9 +57,11 @@ $(document).on('click', '#saveBtn', function (){
|
||||||
$("#closeModalBtn").click();
|
$("#closeModalBtn").click();
|
||||||
$("#searchBtn").click();
|
$("#searchBtn").click();
|
||||||
}
|
}
|
||||||
|
contentFade("out");
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -68,6 +71,7 @@ $(document).on('click', '#saveBtn', function (){
|
||||||
$(document).on('click', '#updateBtn', function (){
|
$(document).on('click', '#updateBtn', function (){
|
||||||
if(valueCheck("userInfoUpdate")){
|
if(valueCheck("userInfoUpdate")){
|
||||||
if(confirm("저장하시겠습니까?")){
|
if(confirm("저장하시겠습니까?")){
|
||||||
|
contentFade("in");
|
||||||
const formData = new FormData($("#userInfoUpdate")[0]);
|
const formData = new FormData($("#userInfoUpdate")[0]);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
|
|
@ -78,9 +82,11 @@ $(document).on('click', '#updateBtn', function (){
|
||||||
success : function(data) {
|
success : function(data) {
|
||||||
alert("저장되었습니다.")
|
alert("저장되었습니다.")
|
||||||
$("#searchBtn").click();
|
$("#searchBtn").click();
|
||||||
|
contentFade("out");
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -102,6 +108,7 @@ $(document).on('click', '#saveCategoryRoleBtn', function (){
|
||||||
categoryRole: 'T'
|
categoryRole: 'T'
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
contentFade("in");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
url : "/admin/insertCategoryRole",
|
url : "/admin/insertCategoryRole",
|
||||||
|
|
@ -112,9 +119,11 @@ $(document).on('click', '#saveCategoryRoleBtn', function (){
|
||||||
},
|
},
|
||||||
success : function(data) {
|
success : function(data) {
|
||||||
alert("저장되었습니다.");
|
alert("저장되었습니다.");
|
||||||
|
contentFade("out");
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ $(document).on('click', '#zipDownBtn', function (){
|
||||||
|
|
||||||
$(document).on('click', '#deleteBtn', function (){
|
$(document).on('click', '#deleteBtn', function (){
|
||||||
if(confirm("이 게시물을 삭제하시겠습니까?\n되돌릴 수 없습니다.")){
|
if(confirm("이 게시물을 삭제하시겠습니까?\n되돌릴 수 없습니다.")){
|
||||||
|
contentFade("in");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
url : "/board/deleteContent",
|
url : "/board/deleteContent",
|
||||||
|
|
@ -78,7 +79,8 @@ $(document).on('click', '#deleteBtn', function (){
|
||||||
location.reload();
|
location.reload();
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다");
|
||||||
|
contentFade("out")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ $(document).on('click', '#saveBtn', function (){
|
||||||
formData.append('fileSeq', $(el).attr("data-fileseq"));
|
formData.append('fileSeq', $(el).attr("data-fileseq"));
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
contentFade("in");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
data : formData,
|
data : formData,
|
||||||
|
|
@ -97,9 +98,11 @@ $(document).on('click', '#saveBtn', function (){
|
||||||
alert("저장되었습니다.");
|
alert("저장되었습니다.");
|
||||||
location.href = "/board/contentList?categorySeq="+$("#categorySeq").val();
|
location.href = "/board/contentList?categorySeq="+$("#categorySeq").val();
|
||||||
}
|
}
|
||||||
|
contentFade("out");
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,14 @@ $(document).on('click', '#moveLeftBtn', function (){
|
||||||
$(document).on('click', '.contentWriteBtn', function (){
|
$(document).on('click', '.contentWriteBtn', function (){
|
||||||
location.href="/board/contentWrite"+(categorySeq!==undefined?("?categorySeq="+categorySeq):"");
|
location.href="/board/contentWrite"+(categorySeq!==undefined?("?categorySeq="+categorySeq):"");
|
||||||
})
|
})
|
||||||
|
function sessionReload(){
|
||||||
|
$.ajax({
|
||||||
|
url: '/refreshSession',
|
||||||
|
type: 'GET',
|
||||||
|
success: function(){location.reload();},
|
||||||
|
error:function(){}
|
||||||
|
});
|
||||||
|
}
|
||||||
function moveCategorySelectBody(direction){
|
function moveCategorySelectBody(direction){
|
||||||
const categorySelectBody = $("#categorySelectBody");
|
const categorySelectBody = $("#categorySelectBody");
|
||||||
const nowX = categorySelectBody.scrollLeft();
|
const nowX = categorySelectBody.scrollLeft();
|
||||||
|
|
@ -33,4 +41,12 @@ function openMenu(parentSeq){
|
||||||
target.click();
|
target.click();
|
||||||
openMenu(target.attr("data-parentseq"));
|
openMenu(target.attr("data-parentseq"));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function contentFade(action){
|
||||||
|
if(action === "in"){
|
||||||
|
$("#fadeDiv").show()
|
||||||
|
}else{
|
||||||
|
$("#fadeDiv").hide()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5,6 +5,7 @@ $(function (){
|
||||||
$(document).on('click', '#savePasswordBtn', function (){
|
$(document).on('click', '#savePasswordBtn', function (){
|
||||||
if(passwordCheck()){
|
if(passwordCheck()){
|
||||||
const formData = new FormData($("#modifyPasswordForm")[0]);
|
const formData = new FormData($("#modifyPasswordForm")[0]);
|
||||||
|
contentFade("in")
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'PUT',
|
type : 'PUT',
|
||||||
data : formData,
|
data : formData,
|
||||||
|
|
@ -13,14 +14,16 @@ $(document).on('click', '#savePasswordBtn', function (){
|
||||||
contentType: false,
|
contentType: false,
|
||||||
success : function(result) {
|
success : function(result) {
|
||||||
if(result==="OK"){
|
if(result==="OK"){
|
||||||
alert("수정되었습니다.");
|
alert("저장되었습니다.");
|
||||||
$("#passwordModifyModal").find(".btn-close").click();
|
$("#passwordModifyModal").find(".btn-close").click();
|
||||||
}else if(result==="passwordNotMatch"){
|
}else if(result==="passwordNotMatch"){
|
||||||
alert("현재 비밀번호가 맞지 않습니다.");
|
alert("현재 비밀번호가 맞지 않습니다.");
|
||||||
}
|
}
|
||||||
|
contentFade("out");
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.");
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ $(document).on('click', '#approvalBtn', function (){
|
||||||
})
|
})
|
||||||
|
|
||||||
function modifyRequestStatusChange(data){
|
function modifyRequestStatusChange(data){
|
||||||
|
contentFade("in");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "PUT",
|
type: "PUT",
|
||||||
url: '/info/modifyRequestStateChange',
|
url: '/info/modifyRequestStateChange',
|
||||||
|
|
@ -60,7 +61,8 @@ function modifyRequestStatusChange(data){
|
||||||
location.reload()
|
location.reload()
|
||||||
},
|
},
|
||||||
error: function () {
|
error: function () {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ $(document).on('change', '.parentSeq', function (){
|
||||||
|
|
||||||
function saveModifyRequest(){
|
function saveModifyRequest(){
|
||||||
const formData = new FormData($("#requestForm")[0]);
|
const formData = new FormData($("#requestForm")[0]);
|
||||||
|
contentFade("in");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
data : formData,
|
data : formData,
|
||||||
|
|
@ -45,7 +46,8 @@ function saveModifyRequest(){
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,69 +3,64 @@
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
xmlns:th="http://www.thymeleaf.org"
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
|
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>해양경찰청 파일관리 시스템</title>
|
<title>해양경찰청 파일관리 시스템</title>
|
||||||
|
|
||||||
<!--bootstrap-->
|
<!--bootstrap-->
|
||||||
<link rel="stylesheet" th:href="@{/vendor/bootstrap-5.1.3-dist/css/bootstrap.min.css}">
|
<link rel="stylesheet" th:href="@{/vendor/bootstrap-5.1.3-dist/css/bootstrap.min.css}">
|
||||||
<link rel="stylesheet" th:href="@{/img/bootstrap-icons-1.7.1/bootstrap-icons.css}">
|
<link rel="stylesheet" th:href="@{/img/bootstrap-icons-1.7.1/bootstrap-icons.css}">
|
||||||
<!--bootstrap-datepicker-->
|
<!--bootstrap-datepicker-->
|
||||||
<link rel="stylesheet" th:href="@{/vendor/bootstrap-datepicker-1.9.0-dist/css/bootstrap-datepicker.min.css}">
|
<link rel="stylesheet" th:href="@{/vendor/bootstrap-datepicker-1.9.0-dist/css/bootstrap-datepicker.min.css}">
|
||||||
<!--summernote-->
|
<!--summernote-->
|
||||||
<link rel="stylesheet" th:href="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.css}">
|
<link rel="stylesheet" th:href="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.css}">
|
||||||
|
|
||||||
<link rel="stylesheet" th:href="@{/css/common.css}">
|
<link rel="stylesheet" th:href="@{/css/common.css}">
|
||||||
<!-- 컨텐츠페이지의 CSS 영역이 들어감 -->
|
<!-- 컨텐츠페이지의 CSS 영역이 들어감 -->
|
||||||
<th:block layout:fragment="css"></th:block>
|
<th:block layout:fragment="css"></th:block>
|
||||||
|
|
||||||
<!--jquery-->
|
<!--jquery-->
|
||||||
<script type="text/javascript" th:src="@{/vendor/jquery-3.6.0/jquery-3.6.0.min.js}"></script>
|
<script type="text/javascript" th:src="@{/vendor/jquery-3.6.0/jquery-3.6.0.min.js}"></script>
|
||||||
<!--bootstrap-->
|
<!--bootstrap-->
|
||||||
<script type="text/javascript" th:src="@{/vendor/bootstrap-5.1.3-dist/js/bootstrap.min.js}"></script>
|
<script type="text/javascript" th:src="@{/vendor/bootstrap-5.1.3-dist/js/bootstrap.min.js}"></script>
|
||||||
<!--bootstrap-datepicker-->
|
<!--bootstrap-datepicker-->
|
||||||
<script type="text/javascript" th:src="@{/vendor/bootstrap-datepicker-1.9.0-dist/js/bootstrap-datepicker.min.js}"></script>
|
<script type="text/javascript" th:src="@{/vendor/bootstrap-datepicker-1.9.0-dist/js/bootstrap-datepicker.min.js}"></script>
|
||||||
<script type="text/javascript" th:src="@{/vendor/bootstrap-datepicker-1.9.0-dist/locales/bootstrap-datepicker.ko.min.js}"></script>
|
<script type="text/javascript" th:src="@{/vendor/bootstrap-datepicker-1.9.0-dist/locales/bootstrap-datepicker.ko.min.js}"></script>
|
||||||
<!--summernote-->
|
<!--summernote-->
|
||||||
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.js}"></script>
|
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.js}"></script>
|
||||||
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js}"></script>
|
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js}"></script>
|
||||||
|
|
||||||
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
||||||
<!-- 컨텐츠페이지의 스크립트 영역이 들어감 -->
|
<!-- 컨텐츠페이지의 스크립트 영역이 들어감 -->
|
||||||
<th:block layout:fragment="script"></th:block>
|
<th:block layout:fragment="script"></th:block>
|
||||||
<th:block sec:authorize="isAuthenticated()">
|
<th:block sec:authorize="isAuthenticated()">
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function (){
|
$(function (){
|
||||||
/*세션 체크*/
|
/*세션 체크*/
|
||||||
const positionList = '[[${session.positionList}]]';
|
const positionList = '[[${session.positionList}]]';
|
||||||
const departmentList = '[[${session.departmentList}]]';
|
const departmentList = '[[${session.departmentList}]]';
|
||||||
const categoryList = '[[${session.categoryList}]]';
|
const categoryList = '[[${session.categoryList}]]';
|
||||||
if(!positionList && !departmentList && !categoryList) {
|
if(!positionList && !departmentList && !categoryList) {
|
||||||
sessionReload()
|
sessionReload()
|
||||||
}
|
|
||||||
})
|
|
||||||
function sessionReload(){
|
|
||||||
$.ajax({
|
|
||||||
url: '/refreshSession',
|
|
||||||
type: 'GET',
|
|
||||||
success: function(){location.reload();},
|
|
||||||
error:function(){}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
</script>
|
})
|
||||||
</th:block>
|
</script>
|
||||||
</head>
|
</th:block>
|
||||||
<body class="d-flex flex-column h-100">
|
</head>
|
||||||
<header th:replace="fragments/header :: headerFragment"></header>
|
<body class="d-flex flex-column h-100">
|
||||||
<div class="h-100" sec:authorize="isAnonymous()" layout:fragment="content"></div>
|
<header th:replace="fragments/header :: headerFragment"></header>
|
||||||
<div sec:authorize="isAuthenticated()" class="row mx-0">
|
<div class="h-100" sec:authorize="isAnonymous()" layout:fragment="content"></div>
|
||||||
<div class="col-2 centerDiv border-end">
|
<div sec:authorize="isAuthenticated()" class="row mx-0">
|
||||||
<div th:replace="fragments/leftMenu :: leftMenuFragment"></div>
|
<div class="col-2 centerDiv border-end">
|
||||||
</div>
|
<div th:replace="fragments/leftMenu :: leftMenuFragment"></div>
|
||||||
<div class="col-10 centerDiv">
|
|
||||||
<div layout:fragment="content"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<footer th:replace="fragments/footer :: footerFragment"></footer>
|
<div class="col-10 centerDiv">
|
||||||
</body>
|
<div layout:fragment="content"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer th:replace="fragments/footer :: footerFragment"></footer>
|
||||||
|
<div id="fadeDiv" style="display: none;">
|
||||||
|
<div class="p-5 rounded"><h1>저장중입니다.</h1></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Loading…
Reference in New Issue