Failed to convert property value of type java.lang.String to required type java.lang.Integer for property price; nested exception is java.lang.NumberFormatException: For input string: "A" 위와 같이 타입오류를 뱉을 경우 errors.properties를 이용할 경우 #추가 typeMismatch.java.lang.Integer=숫자를 입력해주세요. typeMismatch=타입 오류입니다. 를 넣어주면 해당 타입에 관한 오류를 재정의 할 수 있다. 참고로 이것 외에 다른 오류를 정의하는 바람에 다른 오류가 동시에 뜬다면 타입오류만 잡을 수 있도록 return을..
package hello.itemservice.validation; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.validation.DefaultMessageCodesResolver; import org.springframework.validation.FieldError; import org.springframework.validation.MessageCodesResolver; import static org.assertj.core.api.Assertions.*; public class MessageCodesResolverTest { MessageCodesResolve..
@PostMapping("/add") public String addItemV4(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //주의할 점은 BindingResult는 @ModelAttribute를 붙인 오브젝트 뒤에 오는 것으로 순서가 중요하다. //필드 검증 log.info("objectName = {}", bindingResult.getObjectName()); log.info("object = {}", bindingResult.getTarget()); //item.toString 사용 // 로그를 돌려보면 //objectName = item //o..
//필드 검증 if(StringUtils.isEmpty(item.getItemName())){ bindingResult.addError(new FieldError("item","itemName", item.getItemName(), false , null, null, "상품명을 입력해주세요.")); //3번의 field값을 넣으면 오류가 발생했을 때에 오류값을 html에서 표시해 줄 수 있게 모델에 넣어준다. 필드의 타입이 Integer인데 문자열이 들어가도 넣어준다. 그 이유는 item에 넣기 이전에 아닌 리퀘스트에서 넣어준다고 생각하면 된다. //bindingResult.addError(new FieldError("item","itemName","상품명을 입력해주세요.")); } if(item.get..
@PostMapping("/add") public String addItem(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //주의할 점은 BindingResult는 @ModelAttribute를 붙인 오브젝트 뒤에 오는 것으로 순서가 중요하다. //필드 검증 if(StringUtils.isEmpty(item.getItemName())){ bindingResult.addError(new FieldError("item","itemName","상품명을 입력해주세요.")); } if(item.getPrice() == null || item.getPrice() =..
LocaleResolver 스프링은 Locale 선택 방식을 변경할 수 있도록 LocaleResolver 라는 인터페이스를 제공하는데, 스프링 부트는 기본으로 Accept-Language 를 활용하는 AcceptHeaderLocaleResolver 를 사용한다. LocaleResolver 인터페이스 public interface LocaleResolver { Locale resolveLocale(HttpServletRequest request); void setLocale(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable Locale locale); } LocaleResolver 변경 만약 Locale 선택 방식을 ..
스프링은 기본적인 메세지 관리 기능을 제공한다. 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource 를 스프링 빈으로 등록하면 되는데, MessageSource는 인터페이스이다. 따라서 구현체인 'ResourceBundelMessageSource'를 스프링 빈으로 등록하면 된다. 직접등록 @SpringBootApplication public class ItemServiceApplication { public static void main(String[] args) { SpringApplication.run(ItemServiceApplication.class, args); } //메세지 직접등록 @Bean public MessageSource messageSource(){ Resour..
산술 연산 10 + 2 = // 12 10 % 2 == 0 = //true 비교 연산 1 > 10 = //false 1 gt 10 = //false 1 >= 10 = //false 1 ge 10 = //false 1 == 10 = //false 1 != 10 = //true 조건식 (10 % 2 == 0)? '짝수':'홀수' = //짝수 Elvis 연산자 ${data}?: '데이터가 없습니다.' = //Spring ${nullData}?: '데이터가 없습니다.' = //데이터가 없습니다. No-Operation span> ${data}?: _ = 데이터가 없습니다.//Spring ${nullData}?: _ = 데이터가 없습니다.//데이터가 없습니다.
- Total
- Today
- Yesterday
- Intercepter
- 항해99
- 향해플러스
- 로그인
- 항해플러스
- 스프링부트
- reject
- 스프링공부
- SpringBoot
- hypertexttransferprotocol
- 리터럴
- filter
- thymleaf
- Java
- 인터셉터
- JPA
- 향해플러스백엔드
- React
- ArgumentResolver
- react실행
- HTTP
- rejectValue
- 컨트
- 백엔드 개발자 공부
- 향해99
- exception
- 백엔드 개발자 역량
- BindingResult
- jpa api
- 예외처리
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
