티스토리 뷰

package hello.itemservice.domain.item;

import lombok.Data;
import org.hibernate.validator.constraints.Range;
import org.hibernate.validator.constraints.ScriptAssert;
import org.springframework.stereotype.Service;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@Data
@ScriptAssert(lang="javascript", script="_this.price * _this.quantity >= 10000", message="총합이 10000원이 넘지 않게 해주세요.")
public class Item {

    private Long id;

    @NotBlank(message = "공백x")
    private String itemName;

    @NotNull
    @Range(min = 1000, max = 1000000)
    private Integer price;

    @NotNull
    @Max(9999)
    private Integer quantity;

    public Item() {
    }

    public Item(String itemName, Integer price, Integer quantity) {
        this.itemName = itemName;
        this.price = price;
        this.quantity = quantity;
    }
}

 

위의 @scriptAssert는 오브젝트 검증 메세지를 만들 때에 사용 한다. 다만 필드가 아닌 오브젝트 검증을 만들 때에 과하다는 평가가 있다.

그래서 아래 코드 처럼 일반 자바코드로 대체하여 사용하는 것이 좋을 수 있다. 때에 따라 구분해서 사용 하는 것이 좋다.

 

       if(item.getPrice() !=null && item.getQuantity() != null  ) {
            int result = item.getPrice() * item.getQuantity();
            if(result <10000)
                bindingResult.reject("totalPriceMin",new Object[]{10000,result},null);
            //bindingResult.addError(new ObjectError("item",new String[]{"totalPriceMin"},new Object[]{10000,result},"가격 * 수량의 합은 10,000원 이상이어야 합니다. 현재 값 = " + result));
        }
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함