이전 회사에서는 풀스택 개발자로서 UI 개발은 SPA 기반인 React나 Next.js로 개발을 주로 했었다. 하지만, 이번 회사에서는 기술스택으로서 타임리프를 사용하게 되었다. 타임리프를 제대로 사용해본 것은 처음이기에 배웠던 점, 느꼈던 점 위주로 작성한다.
- Thymeleaf
장점: 서버 사이드 렌더링, SEO 친화성, 간단한 설정 및 통합, 전통적인 웹 애플리케이션에 적합
단점: 동적 상호작용 및 클라이언트 측 성능에 한계.
- SPA 프레임워크
장점: 동적이고 복잡한 UI, 빠른 사용자 경험, 모듈성, 재사용성, 풍부한 생태계
단점: SEO 문제, 초기 설정의 복잡성, 번들 크기
# 1. 에러메시지
<form action="#" th:action="@{/submit}" th:object="${user}" method="post">
<div>
<label>Name:</label>
// "*{name}" => user.name
<input type="text" th:field="*{name}" />
<div th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</div>
</div>
<div>
<label>Email:</label>
<input type="text" th:field="*{email}" />
// parameter에 따른 에러메시지 관리 가능
<div th:if="${#fields.hasErrors('email')}" th:errors="*{email}">Email Error</div>
</div>
<button type="submit">Submit</button>
</form>
# 2. th:field
# th:field를 사용하면 HTML 태그의 id, name, value 속성을 자동 처리해준다.
- 렌더링 전
<input type="text" th:field="*{itemName}" />
- 렌더링 후
<input type="text" id="itemName" name="itemName" th:value="*{itemName}" />