도란한
212
2021-02-26 11:31:09
0
69

thymeleaf fragment 질문입니다!


안녕하세요! 신입 개발자입니다

다름이 아니라 프론트쪽을 간단하게 하려고 타임리프를 사용하여 개발하고있습니다.

그런데 fragment로 영역을 나눠서 페이지를 만들고 있는데

fragment를 불러오는쪽에서 ajax로 replaceWith를 사용하여 fragment에 있는 데이터를 바꿀려고하는데

데이터 변경이 안되고 지정한 div가 사라지더라구요 ㅠㅠ

컨트롤러에서는 값이 있는데 fragment를 불러오는 쪽에서 문제가 있는 것 같습니다..


--main.html--

<div th:replace="/fragments/add_admin.html :: fragment-add_admin">


	</div>



<script>	

	



	var token = $("meta[name='_csrf']").attr("content");

    var header = $("meta[name='_csrf_header']").attr("content");

	

    

    function list_district() {

		var num = document.getElementById("region");

		num = num.options[num.selectedIndex].value;

		var RegionDto = {

				rid: num

					}

		$.ajax({

			beforeSend: function(xhr){

	            xhr.setRequestHeader(header,token);

	        },

			url : "/admin_management/list_district",

			data : RegionDto,

			type : "POST",

			cache : false

		}).done(function(fragment) {

			

			$("#dlist").replaceWith(fragment);

		});



	}

</script>

--fragment--


<html xmlns:th="http://www.thymeleaf.org" lang="ko">

<div th:fragment="fragment-add_admin" class="flex">

		<div id="add_admin" class="modalcontainer">
			<div class="flex">
				<div id="add_admin_modal" class="modal">
					<div class="closeBtn">
						<span>&#43;</span>
					</div>
					<div class="add-content">
						
						<form autocomplete="off" action="#" th:action="@{/admin_management/add_admin}" th:object="${admin}" method="post" role="form">
						<div class = "row" style="justify-content:space-around">
		
						
				
				
				<div id="dlist" class="add-field" style="flex-wrap: wrap;">

					<p style="padding-left: 10px; width:80px">자치구</p>
					<div class="input-select">
						<select class="add" id="district" name="district"  data-trigger=""  >
						<th:block th:if="${#lists.isEmpty(dlist)}">
						<option value=""  selected disabled hidden >선택하세요</option>
						</th:block>
						<option th:each="dlist : ${dlist}" th:field="*{dlist}" th:value="${dlist.dname}" th:text="${dlist.dname}"></option>
					</select>
					</div>

				</div>
					

				
						</div>
						</form>
					</div>

				</div>
			</div>
		</div>

	</div>
			
</html>


--Controller--


@RequestMapping(value = "/admin_management/list_district", method = RequestMethod.POST)
    public String get_district(Model model, RegionDto region) { 
		List<DistrictDto> dlist = districtService.DistrictList(region.getRid());
		
		if(dlist != null) {
	        model.addAttribute("dlist", dlist);
		}
        
        return "admin_management :: #dlist";
		}
	




fragment부분의 div=dlist 부분의 값이 변경되야 하는데 div부분이 아예 사라지더라구요 ㅠㅠ

그런데 fragment에 있는 코드를 main.html에 그냥 넣으면 값이 잘 나옵니다ㅜㅜ 왜 그러는걸까요

0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.