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..
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}?: _ = 데이터가 없습니다.//데이터가 없습니다.
리터럴이란 소스 코드상에 고정된 값을 말하는 용어이다. 예를 들어서 다음 코드에서 "hello"는 문자 리터럴, '10', '20'는 숫자 리터럴이다. String a = "hello"; int a = 10 * 20 ; 타임리프에서 문자 리터럴은 항상 '(작은따옴표)로 감싸야한다. 근데 문자를 항상 '로 감싸는 것은 너무 귀찮은 일이다. 공백 없이 쭉 이어진다면 하나의 의미있는 토큰으로 인지해서 다음과 같이 작은 따옴표를 생략할 수 있다. //ok //not ok //ok
스프링 bean에 등록된 편의 객체 접근 ${@객체명.hello('값')} 으로 접근 가능 html 편의 객체 Request Parameter = Request Parameter = session = session = spring bean = spring bean = java @Component("helloBean") static class HelloBean{ public String hello(String data){ return "Hello" + data; } }
- Total
- Today
- Yesterday
- 컨트
- 향해99
- 스프링부트
- 예외처리
- 스프링공부
- reject
- React
- Intercepter
- ArgumentResolver
- 향해플러스
- thymleaf
- exception
- 백엔드 개발자 공부
- BindingResult
- react실행
- JPA
- 로그인
- rejectValue
- HTTP
- 항해99
- hypertexttransferprotocol
- 인터셉터
- Java
- 리터럴
- filter
- SpringBoot
- 백엔드 개발자 역량
- 항해플러스
- 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 | 31 |