목록분류 전체보기 (718)
쌓고 쌓다
서버에서 외부 api를 사용할 일이 있어서 restTemplate라는걸 사용해보는데... 아래의 에러가 발생.! 문제의 코드 RestTemplate restTemplate = new RestTemplate(); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED); Map map = new HashMap(); map.put("grant_type", grantType); map.put("client_id", clientId); map.put("redirect_uri", redirectUri); map.put("code", ingaCode); HttpEntity r..
MessageCodesResolver 메시지 생성 규칙 MessageCodesResolver는 에러 코드를 가지고 에러 메시지 코드들을 생성해준다. 규칙은 아래와 같다. ObjectError 1. code.object name 2. code FieldError 1. code.object name.field 2. code.field 3. code.field type 4. code rejectValue()와 reject()는 MessgeCodesResolver를 이용한다. rejectValue, reject가 FieldError, ObjectError를 생성해주는데 FieldError, ObjectError는 에러 코드들을 여러개 가질 수 있다. 그래서 MessageCodesResolver를 통해 생성된 오..
어쩌다 직면한 이 에러에 오늘 하루 다 보냈다...ㅎㅎ 먼저 상황을 보자. 에러 발생 상황 컨트롤러에 작성된 @InitBinder, @Validated를 통해 유효성 검사를 실시한다. public class ValidationItemControllerV2 { private final ItemValidator itemValidator; @InitBinder public void init(WebDataBinder dataBinder) { dataBinder.addValidators(itemValidator); } @PostMapping("/add") public String addItemV5(@Validated @ModelAttribute Item item, BindingResult bindingResult..
문제 상황 필드 Validation 검사로 에러 메시지를 errors.properties에 작성했고 화면에 문제 내용을 뿌려주고싶었다. 그런데 한글이 ??로 출력되는 문제가 발생했다. 그런데 영어는 또 잘 나온다. 저번에도 ?? 출력 관련 문제가 있어서 인코딩을 건드렸었는데 이번에도 인코딩에 문제가 있는 것 같다. 일단 문제 상황을 보자 errors.properties #level4 require=필수 값입니다. errors.properties #level4 require=need. 영어로 하면 잘 된다.. 해결 방법 설정 -> Editor -> File Encodings에 아래의 encoding properties file의 값을 UTF-8로 설정 해결 완료~
https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 예약 시간들이 주어졌다. 00:00시부터 24:00시까지 값을 가지는 배열이 있다고 생각하자. 현재 배열의 값은 0으로 초기화되어있다. 입실 시간부터 퇴실 시간까지 값을 1 더해준다. 다음 예약 시간의 입실 시간부터 퇴실 시간까지 값을 1 더해준다. 이렇게 더해주면 겹치는 부분은 +1씩 겹치는 만큼 값을 갖는다. 이때 배열의 값중에서 제일 큰 값이 모든 방을 관리하는데 필요한 방의 개..
앞서 작성한 bindingResult를 보자. bindingResult.addError(new ObjectError("poster", null, null, "조건: 키와 몸무게 합은 150이상.")); ObjectError 객체를 생성하는데 번거로움이 있다. 이것을 더 간략히 해보자. BindingResult 파라미터의 위치는 @ModelAttribute 뒤에 위치한다. 그러므로 앞서 작성한 ObjectError 객체 생성에 objectName인 "poster"를 작성할 필요가 있을까? 그렇다. BindingResult는 검증할 객체를 알고 있다. log.info("objectName={}", bindingResult.getObjectName()); log.info("target={}", bindingR..
MessageCodesResolver? 그게 뭔데 errors.properties #Level1 required.item.itemName=상품 이름은 필수입니다. #Level2 required=필수 값 입니다. "required" 에러 코드(errorCode)를 만들때 "required.item.itemName"처럼 메시지를 세밀하게 만들 수 있고 "required"처럼 메시지를 단순화하여 사용할 수 있다. 단순화한 메시지는 넓게 사용이 가능하나. 세밀한 메시지는 좁은 범위에서 사용이된다. 즉, 에러 코드만으로 좁은 범위에서 넓은 범위로 메시지를 찾으며 우선순위에 맞춰 메시지를 찾아 사용할 수 있다. 스프링은 MessageCodesResolver가 위의 우선순위에 맞춰 메시지를 찾는 기능을 제공한다. M..
굳이 BindingResult의 에러 메시지를 매번 입력하지 않고 properties로 관리하는 이유가 있다. 예를 들어. 어떤 곳에서는 "설명을 입력해주세요.", 또 어떤 곳에서는 "설명을 입력하세요", "설명은 필수입니다." 와 같이 일관성 없는 메시지를 통일하여 관리할 수 있다는 장점이 있다. application.properties spring.messages.basename=messages, errors 기본은 spring.messages.basename=messages이나 errors를 추가. messages는 메시지, 국제화에 사용하는 properties이었다. 여기에 에러 메시지를 위한 properties 추가. error.properties required.item.itemName=상품 ..