728x90
- 코드를 쓴 상황
팀프로젝트 중 내가 맡은 기능이 결제파트인데 그 중 결제상세페이지 view단을 관리자페이지와 마이페이지에서 같이 사용해야했다. 관리자페이지와 마이페이지는 left-menu를 제외하고 모든 fragments가 겹치는 상황.
처음에 controller에서 '관리자','마이페이지'같은 문자열을 받아와 html 태그에 th:if 구문으로 분기처리를 하려고 했다. 그런데 th:unless 조건을 붙여 아래 html 태그를 두번 쓰니깐 오류가 났다.
두번째로 th:block 구문안에 html태그를 분기처리해봄 target으로 관리자 페이지 controller에서 '관리자'라는 값이 넘어오면 관리자페이지 layout으로 아니라면 마이페이지 layout으로 작성했는데 안됨
세번째로 if문으로 분기처리를 안하고 그냥 controller에서 layout:decorate에 들어갈 값을 넘겨주면 어떨까 생각하게 되었고 ~{layout/default} 자체를 "layoutDeco"로 view단에 보냈고 layout:decorate=${layoutDeco}로 코드를 작성해봤는데 오류가 났다... 오류 내용을 보면 값은 제대로 가져오는데 파싱이 안되는 상황.. ~{$layout/${layoutDeco}}이렇게도 써보고 여러가지를 시도해봤는데 해결되지 않음
네번째는 th:attr 구문으로 layout:decorate 속성의 값을 지정해줄려고 했는데 역시나 오류가 났다... - 에러메시지
th:attr 구문을 이용해서 쓴 th:attr="layout:decorate=${layoutDeco}"의 layoutDeco 바인딩을 전혀 못받아온다... - 내 코드
<!-- 첫번째 --> <html th:if="${target == '관리자'}" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/default}"> <html th:unless="${target == '관리자'}" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/mypagedefault}"> <!-- 두번째 --> <th:block th:with="target=${layoutDeco}"> <html th:if="${target == '관리자'}" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/default}"> <html th:unless="${target == '관리자'}" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/mypagedefault}"> </th:block> <!-- 세번째 --> <html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="${layoutDeco}"> <!-- 네번째 --> <html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" th:attr="layout:decorate=${layoutDeco}">
- 해결
선생님께 질문하고 내가 시도해 봤던 방법들을 다 설명 드리고 선생님도 조금 찾아보시다가 해결 방법을 찾아내셨다...
두번째 시도 했던 방법에서 나는 layoutDeco를 ~{layout/default} 자체를 다 담아놨는데 그냥 layout/default 부분만 담고 view단에서 layout:decorate="~{${layoutDeco}}"로 작성하면 된다...
'🤦♀️ error note' 카테고리의 다른 글
springboot - queryDSL 오류 (0) | 2023.04.05 |
---|---|
java - 반복 일정 해당 월 날짜 구하기 (반복문 오류) (0) | 2022.11.11 |
springboot - error 보기 (0) | 2022.02.15 |
이클립스 - 톰캣 서버 충돌 오류 (오라클) (0) | 2022.01.29 |
Github - Eclipse 연동 로그인 오류 (0) | 2021.12.13 |