스프링/스프링 MVC 패턴 2편

    5. 검증2 - Bean Validation

    스프링 MVC는 어떻게 Bean Validator를 사용? 스프링 부트가 spring-boot-starter-validation 라이브러리를 넣으면 자동으로 Bean Validator를 인지하고 스프링에 통합한다. 스프링 부트는 자동으로 글로벌 Validator로 등록한다. LocalValidatorFactoryBean 을 글로벌 Validator로 등록한다. 이 Validator는 @NotNull 같은 애노테이션을 보고 검증을 수행한다. 이렇게 글로벌 Validator가 적용되어 있기 때문에, @Valid, @Validated 만 적용하면 된다. 검증 오류가 발생하면, FieldError , ObjectError 를 생성해서 BindingResult 에 담아준다. 주의! 다음과 같이 직접 글로벌 Val..

    4. 검증1 - Validation

    검증 직접 처리 - 개발 @PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과를 보관하는 객체 생성 Map errors = new HashMap(); //검증 로직 if(!StringUtils.hasText(item.getItemName())){ errors.put("itemName", "상품 이름은 필수 입니다."); } if(item.getPrice() == null || item.getPrice() 10000000){ errors.put("price", "가격은 1..

    3. 메시지, 국제화

    스프링 메시지 소스 설정 스프링 부트 스프링 부트를 사용하면 스프링 부트가 MessageSource 를 자동으로 스프링 빈으로 등록한다 웹 애플리케이션에 국제화 적용하기 이번에는 웹 애플리케이션에 국제화를 적용해보자. 먼저 영어 메시지를 추가하자 messages_en.properties label.item=Item label.item.id=Item ID label.item.itemName=Item Name label.item.price=price label.item.quantity=quantity page.items=Item List page.item=Item Detail page.addItem=Item Add page.updateItem=Item Update button.save=Save button...

    2. 타임 리프 - 스프링 통합과 폼

    입력 폼 처리 • th:object : 커맨드 객체를 지정한다. form 태그 안에서만 적용 • *{...} : 선택 변수 식이라고 한다. th:object 에서 선택한 객체에 접근한다. • th:field HTML 태그의 id , name , value 속성을 자동으로 처리해준다. 렌더링 전 렌더링 후 등록 폼 th:object 를 적용하려면 먼저 해당 오브젝트 정보를 넘겨주어야 한다. 등록 폼이기 때문에 데이터가 비어있는 빈 오브젝트를 만들어서 뷰에 전달하자. FormItemController 변경 @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "form/addF..