타임리프 게시글 상세보기,삭제,수정,등록 실습

Yeeun·2025년 5월 2일
0

SpringBoot

목록 보기
34/46

위와 아래의 차이

위는 첫번째 테이블에서 스테이트 카운트를 사용하기때문에 루프를 돌때 state: boardList를 썼고

아래는 board 의 seq라는 필드를 사용하기에 스테이트 필요없어서 사용안함
둘다 똑같은 화면이지만(a태그 제외 ) 번호를 뭘로 처리했느냐의 차이가 있음 .

이클립스 주석처리 단축키
ctrl+shift+c

템플릿 겟보드 html 만들기

게시글 상세보기 html 작성

상세보기 출력

게시글 수정 , 게시글 삭제 html 작성

컨트롤러에 어노테이션 확인, 포스트매핑되어있으므로 html폼태그 메소드가 포스트여서 자동매핑

게시글 등록 html 작성

insertView와 insert어노테이션을 따로 빼둔 이유 / 구분의 명확히 시험해보기 위해서 . 따라서 처음 수정을 위해 페이지를 들어갈때는 수정 템플릿을 그저 보여주는 것이고, 등록버튼을 누르면 insertBoard와 매핑되어 포스트매핑된 컨트롤러가 호출되어 실행됨.


처음엔 뷰가 나오고, 어드레스바 링크또한 그리 작성해야함. 게시글 등록버튼을 눌렀을때 실행되는건 포스트매핑된 insertBoard메소드.
보드리스트페이지로 리다이렉트 됨


##Error

form html에서
@{/updateBoard}라고 하든, @{updateBoard}라고하든, insertBoard에서처럼 그냥 updateBoard라고 하든 상관없음. 하지만 슬래시 쳐주는게 정석

그리고 분명 설정을 캐시 안되게 하는걸로 했는데 수정시 바로 반영이 안되어서 교수님께 여쭤보니
서버의 캐시문제가 아니라 웹브라우저의 캐시문제일 수 있다하심.
F5로 리프레시 안하고 화면의 새로고침버튼 눌렀을때 제대로 리프레시 안되고 캐시를쓰는경우가 있다 하니 제대로 리프레시하려면 서버를 그냥 껐다 키는게 가장 확실함.


@{} 경로 관련 정리

  • th:action="@{/updateBoard}"정석적인 사용법

    • 슬래시 /루트 경로부터 지정하는 것이기 때문에 가장 명확합니다.
  • th:action="@{updateBoard}" ← 작동은 하지만, 상대 경로로 인식되므로 오류의 원인이 될 수 있음

  • action="updateBoard"Thymeleaf 태그 아님, 브라우저가 처리 → 템플릿 처리 안 됨

📝 Tip: 항상 @{/경로} 형태로 사용하는 것이 가장 안정적이고 유지보수에도 좋습니다.


✅ 브라우저 캐시 문제 정리

  • 수정 후 화면이 즉시 반영되지 않는 이유서버 캐시가 아니라 웹 브라우저 캐시 때문일 수 있음.
  • 특히 **F5(강력 새로고침)**을 누르지 않고 상단의 새로고침 버튼만 누르면,
    브라우저가 HTML/CSS/JS 등을 캐시에서 가져올 수 있음.

🔧 해결 방법:

  1. F5 또는 Ctrl + F5 (Windows), Cmd + Shift + R (Mac) 사용
  2. 또는 브라우저 개발자 도구(F12) → "Disable cache" 체크 후 사용
  3. 그래도 안 되면 서버를 껐다 켜는 것도 하나의 방법 (Spring Boot라면 재시작 빠름)

💡 참고로 개발 중에 추천하는 설정

  • application.properties 또는 application.yml에 아래 설정 추가
spring.thymeleaf.cache=false

이 설정은 Thymeleaf 템플릿 캐싱을 끄는 설정입니다. 개발 중에는 필수입니다.

##Error

th 안하면 안됨. 타임리프니까. 로그인처리할때 이거때문에 오류났음

0개의 댓글