π μꡬμ¬ν νμΈ
βοΈ BindingResult μ Object
addError
μ 첫λ²μ§Έ Param μ BindingResult
μ Object κ°μ μ
λ ₯νλ μ리μ΄λ€.
- νμ§λ§ μ¬μ€
BindingResult
λ λ°μΈλ© ν΄μΌν Object λ₯Ό μ΄λ―Έ μκ³ μλ€.
BindingResult
κ° κΌ λμμΌλ‘ νλ Object λ€μ μμΉν΄μΌνλ μ΄μ μ΄λ€.
π BindingResult μ νκ² νμΈ
addError
μΌλ‘ Object κ°μ μ
λ ₯νκΈ° μ μ log λ‘ νμΈν΄λ³΄λ©΄ μ¦κ±°λ₯Ό νμΈν μ μλ€.
@PostMapping("/add")
public String addItemV4(
@ModelAttribute Item item,
BindingResult bindingResult,
RedirectAttributes redirectAttributes
) {
log.info("ObjectName = {}", bindingResult.getObjectName());
log.info("target = {}", bindingResult.getTarget());
- μΆλ ₯λ¬Ό
- μ΄λ―Έ νκ²μΌλ‘ νλ Object μ νλκ° κΉμ§ data λ₯Ό κ°κ³ μλ€.
- μ΄κ²μ
addError
μ λ³λλ‘ Object λ₯Ό μ
λ ₯νμ§ μμλ λλ€λ μλ―Έμ΄λ€.
ObjectName = item
target = Item(id=null, itemName=, price=null, quantity=null)
βοΈ rejectValue μ reject
BindingResult
κ° μ 곡νλ μ΄ λκ°μ§ method λ₯Ό μ¬μ©νλ©΄ Error λ₯Ό μ§μ μ
λ ₯νμ§ μμλ λλ€.
πΒ rejectValue
- νλ κ²μ¦λ‘μ§μ ꡬνν λ μ¬μ©λλ method μ΄λ€.
- argument κ° μλ€λ©΄ 2λ²μ§Έ param κΉμ§λ§ μ
λ ₯νλ©΄λλ€.
- λ©μμ§ μ½λλ κ²½λ‘λ₯Ό μ λΆ λ€ μ
λ ₯ν νμ μμ΄ κ°μ₯ μμ μμΉν κ²½λ‘λ₯Ό μ μ΄μ£Όλ©΄
MessageCodesResolver
κ° μ½λλ₯Ό μμ±μμΌμ€λ€.
- argument κ° μλ€λ©΄ Object λ°°μ΄μ ννλ‘ λν΄νΈ λ©μμ§κΉμ§ μΈμλ‘ μ
λ ₯ν΄μΌ νλ€.
- λ³΄ν΅ λν΄νΈ λ©μμ§λ μ¬μ©νμ§ μκΈ°λλ¬Έμ null λ‘ λλλ€.
if (!StringUtils.hasText(item.getItemName()))
bindingResult.rejectValue("itemName", "required");
if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 100000)
bindingResult.rejectValue("price", "range",
new Object[]{1000,1000000}, null);
π reject
- κΈλ‘λ² κ²μ¦μ ꡬνν λ μ¬μ©λλ mtethod μ΄λ€.
- κΈλ‘λ²μ΄κΈ° λλ¬Έμ νλκ°λ μ
λ ₯ν΄μ€ νμλ μλ€.
- λλ¨Έμ§λ rejectValue μ λμΌνλ€.
if (item.getPrice() != null && item.getQuantity() != null) {
int resultPrice = item.getPrice() * item.getQuantity();
if (resultPrice < 10000)
bindingResult.reject("totalPriceMin",
new Object[]{10000, resultPrice}, null);
}
π λλ¨Έμ§ κ²μ¦λ‘μ§ λ¦¬ν©ν λ§
- μ΄μ μΌ μ¨μ΄ μ¬μ΄μ§λ€.
if (!StringUtils.hasText(item.getItemName()))
bindingResult.rejectValue("itemName", "required");
if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 100000)
bindingResult.rejectValue("price", "range",
new Object[]{1000,1000000}, null);
if (item.getQuantity() == null || item.getQuantity() >= 9999)
bindingResult.rejectValue("quantity", "max",
new Object[]{9999}, null);
if (item.getPrice() != null && item.getQuantity() != null) {
int resultPrice = item.getPrice() * item.getQuantity();
if (resultPrice < 10000)
bindingResult.reject("totalPriceMin",
new Object[]{10000, resultPrice}, null);
}