본문 바로가기
728x90
반응형

스프링187

[Spring] BindingResult의 rejectValue(), reject() 를 사용하여 FieldError, ObjectError를 직접 생성하지 않고 검증하기 FieldError, ObjectError를 다루려면 여러 가지 파라미터를 세팅해야하기 때문에 불편한 부분이 많다. 컨트롤러에서 BindingResult는 검증해야할 객체인 target 바로 다음에 온다. 따라서 BindingResult는 이미 본인이 검증해야할 객체인 target을 알고 있다. log.info("objectName={}", bindingResult.getObjectName()); log.info("target={}", bindingResult.getTarget()); 를 실행해보면 와 같이 나오는 걸 볼 수 있다. rejectValue(), reject() BindingResult가 제공하는 rejectValue(), reject()를 사용하면 FieldError, ObjectError.. 2023. 9. 27.
[Spring] erros.properties 를 이용한 오류 코드와 메시지 처리 FieldError 생성자를 살펴보면 아래와 같다. public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[] codes, @Nullable Object[] arguments, @Nullable String defaultMessage) 파라미터 목록 - objectName : 오류가 발생한 객체 이름 - field : 오류 필드 - rejectedValue : 사용자가 입력한 값(거절된 값) - binding.. 2023. 9. 26.
[Spring] 서버 유효성 검사 시 화면 입력 데이터를 보존해주는 FieldError, ObjectError FieldError, ObjectError를 이용하면 사용자가 입력한 잘못된 데이터도 서버에 다녀왔어도 그대로 화면에서 보존해준다. VaidationItemControllerV2 - addItemV2 @PostMapping("/add") public String addItemV2(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { // 검증 로직 if(!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", item.getItemName(.. 2023. 9. 26.
[Spring] BindingResult를 이용한 검증처리 직접 검증처리를 했던 이전 게시물(https://drcode-devblog.tistory.com/542) 과는 달리, 스프링은 BindingResult라는 기능을 제공하여 검증시에 편리함을 제공한다. ValidationItemControllerV2 컨트롤러 생성 먼저 ValidationItemControllerV1을 복사하여 ValidationItemControllerV2 를 만든다. hello.itemservice.web.validation.ValidationItemControllerV1 복사 hello.itemservice.web.validation.ValidationItemControllerV2 붙여넣기 템플릿 파일 복사 validation/v1 디렉토리의 모든 템플릿 파일을 validation/v.. 2023. 9. 22.
[Spring] 직접 검증처리 사용자가 상품 등록 폼에서 정상 범위 데이터를 입력하면, 서버에서는 검증 로직이 통과하고, 상품을 저장하고, 상세 화면으로 redirect 한다. 고객이 상품 등록 폼에서 상품명을 입력하지 않거나, 수량, 가격 등이 너무 작거나 커서 검증 범위를 넘어서면, 서버 검증 로직이 실패해야 한다. 이렇게 검증에 실패한 경우 고객에게 다시 상품 등록 폼을 보여주고, 어떤 값을 잘못 입력했는지 친절하게 알려주어야 한다 ValidationItemControllerV1.java 에서 addItem 수정 @PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) .. 2023. 9. 22.
[Spring] 검증(Validation) 오류처리 및 프로젝트 생성 + 프로젝트 명칭 바꾸기 상품 관리 시스템에 새로운 요구사항을 추가해보자. 요구사항: 검증 로직 추가 - 타입 검증 : 가격, 수량에 문자가 들어가면 검증 오류 처리 - 필드 검증 : 상품명: 필수, 공백X : 가격: 1000원 이상, 1백만원 이하 : 수량: 최대 9999 - 특정 필드의 범위를 넘어서는 검증 : 가격 * 수량의 합은 10,000원 이상 지금까지 만든 웹 애플리케이션은 폼 입력시 숫자를 문자로 작성하거나해서 검증 오류가 발생하면 오류 화면으로 바로 이동한다. 이렇게 되면 사용자는 처음부터 해당 폼으로 다시 이동해서 입력을 해야 한다. 아마도 이런 서비스라면 사용자는 금방 떠나버릴 것이다. 웹 서비스는 폼 입력시 오류가 발생하면, 고객이 입력한 데이터를 유지한 상태로 어떤 오류가 발생했는지 친절하게 알려주어야 한.. 2023. 7. 27.
728x90
반응형