본문 바로가기

Spring

[Spring]Spring 시작해보기(14) - 에러메시지 출력 창 중복 제거

각 template에서 오류 메시지를 출력하기 위한 부분의 중복이 있다.

<div class="alert alert-danger" role="alert" th:if="${#fields.hasAnyErrors()}">
    <div th:each="err : ${#fields.allErrors()}" th:text="${err}" />
</div>

이런 중복을 없애기 위해서는 어떻게 해야할까?

“공통 템플릿”을 사용해 에러메시지를 출력하는 부분의 중복을 없애보자.

 

1. 중복되는 영역 템플릿 생성

form_errors.html 파일을 만들어 중복되는 부분을 템플릿 상속으로 해결할 수 있도록 한다.

<div th:fragment="formErrorsFragment" class="alert alert-danger" 
    role="alert" th:if="${#fields.hasAnyErrors()}">
    <div th:each="err : ${#fields.allErrors()}" th:text="${err}" />
</div>

여기서 th:fragment=”formErrorsFragment” 라는 속성을 추가했는데, 이는 반복되는 부분을 처리하기 위한 것이다.

 

2. 공통 템플릿 적용

공통 템플릿을 적용하기 위해 각 form.html을 수정한다.

<div th:replace="form_errors :: formErrorsFragment"></div>

여기서 replace는 해당 태그를 완전히 대체하는 방법으로 해당 구간을 form_error.html 파일의 fragment 속성이 formErrorsFragment인 영억으로 변경한다.