필드에 오류가 있으면 FieldError 객체를 생성하여 bindingResult 에 담아둔다
if (!StringUtils.hasText(item.getItemName())) {
bindingResult.addError(new FieldError("item", "itemName", "상품 이름은
필수입니다."));
}
특정 필드를 넘어서는 오류가 있으면 ObjectError 객체를 생성해서 bindingResult 에 담아둔다
bindingResult.addError(new ObjectError("item", "가격 * 수량의 합은 10,000원 이상이어야
합니다. 현재 값 = " + resultPrice));
#fields : BindingResult가 제공하는 검증 오류에 접근
<div th:if="${#fields.hasGlobalErrors()}">
<p class="field-error" th:each="err : ${#fields.globalErrors()}" th:text="${err}">
글로벌 오류 메시지
</p>
</div>
th:errors : 해당 필드에 오류가 있으면 태그 출력, th:if 의 편의 버전
th:errorclass : th:field 에서 지정한 필드에 오류가 있으면 class명 추가
<div>
<label for="itemName" th:text="#{label.item.itemName}">상품명</label>
<input type="text" id="itemName" th:field="*{itemName}"
th:errorclass="field-error"
class="form-control" placeholder="이름을 입력하세요">
<div class="field-error" th:errors="*{itemName}">상품명 오류</div>
</div>
th:field : 오류 발생시 FieldError에서 보관한 값을 출력
th:field="*{price}"
공식 매뉴얼 https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html#validation-and-error-messages
bindingResult.rejectValue("price", "range", new Object[]{1000, 1000000}, null)
구체적인 것을 먼저, 덜 구체적인 것을 가장 나중에 생성
FieldError rejectValue("itemName", "required")
required.item.itemName
required.itemName
required.java.lang.String
required
ObjectError reject("totalPriceMin")
totalPriceMin.item
totalPriceMin