스프링MVC (21) 썸네일형 리스트형 검증1 - Validation : BindingResult1, 2, FieldError GlobalError 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 스프링에서는 검증 오류처리방법으로 BindingResult를 제공한다. 💡주의! BindingResult 파라미터의 위치는 @ModelAttribute 다음에 와야 한다 필드 오류 - FieldError if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", "상품 이름은 필수입니다.")); } FieldError 생성자 요약 필드에 오류가 있으면 FieldError 객체를 생성해서 bindingResult 에 담아두면 된다. objectName : @ModelAttribute이름 field : .. 메시지, 국제화 : 메시지, 국제화 소개, 스프링 메시지 설정및 사용 인프런 김영한님의 스프링mvc2편을 보고 정리한글입니다. 무엇을 배웠나요? 메시지, 국제화 소개 다양한 메시지를 한 곳에서 관리하는 기능을 메시지 기능이라고 한다. 메시지 기능 예시 item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 각 HTML들은 다음과 같이 해당 데이터를 key 값으로 불러서 사용하는 것이다. 메시지를 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다. 💡한국에서 접근한건지 영어에서 접근한 것인지는 인식하는 방법은 HTTP accept-language 해더 값을 사용하거나 사용자가 직접 언어를 선택하도록 하고, 쿠키 등을 사용해서 처리하면 된다. 스프링 메시지 소스 설정 메시지 관리 기능을 제공하는 Mes.. 타임리프 - 스프링 통합과 폼 : 체크박스, 라디오버튼, 셀렉트 박스 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? html에서 체크박스를 체크하면html Form에서 on이라는 값이 넘어간다. 이때 스프링은 on이라는 문자를true타입으로 변환해준다. (by 스프링타입 컨버터)💡이때 스프링은 체크박스의 이름 앞에 언더스코어(_)를 만들어서 전송을 하면 체크를 해제했다고 인식할 수 있다 ⚠️ HTML에서 체크 박스를 선택하지 않고 폼을 전송하면 타임리프에서 생성한 필드 자체가 서버로 전송되지 않는다. 즉 서버에서는 null로 처리한다. 이때 만약 수정을 하려고 하는 경우 상황에 따라서 문제가 될수도 있다.(체크 되어있는 것을 해제하고 서버로 전송해버리면 서버로는 아무값도 넘어가지 않기 때문에 값이 수정 되지 않을 수도 있다.) ex) open.. 타임리프 기타 문법 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? th:object : 커맨드 객체를 지정한다. *{...} : 선택 변수 식이라고 한다. th:object 에서 선택한 객체에 접근한다. HTML 태그의 id , name , value 속성을 자동으로 처리해준다 th:field 로 하면 모델에 넣어둔 객체에 속하는 변수들의 이름으로 html 태그의 name 속성이 설정되고 변수의 값이 html태그의 value값으로 설정된다. 타임리프 - 스프링 통합과 폼 : 타임리프 입력 폼 처리 인프런 영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 지금부터 타임리프가 제공하는 입력 폼 기능을 적용해서 기존 프로젝트의 폼 코드를 타임리프가 지원하는 기능을 사용해서 효율적으로 개선 th:object : 커맨드 객체를 지정한다. *{…} : 선택 변수 식이라고 한다. th:object 에서 선택한 객체에 접근한다. th:field : HTML태그의 id, name, value 속성을 자동으로 처리 해준다. th:field렌더링 전 th:field렌더링 후 th:object 적용하려면 먼저 해당 오브젝트 정보를 넘겨주어야 한다. model.addAttribute("item", new Item()); th:object="${item}": 에서 사용할 객체를 지정한다. 선택 변수식(*.. 타임리프 - 스프링 통합과 폼 : 타임리프 스프링 통합 인프런 영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 타임리프는 크게 두가지 메뉴얼을 제공한다. 타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위해 다양한 기능을 편리하게 제공한다. 그리고 이런 부분은 스프링으로 백엔드를 개발하는 개발자 입장에서 타임리프르 선택하는 하나의 이유가 된다. 스프링 통합으로 인해 추가되는 기능들 ${@myBean.doSomething()} 처럼 스프링 빈 호출 지원 편리한 폼 관리를 위한 추가 속성 th:object (기능 강화, 폼 커맨드 객체 선택) th:field , th:errors, th:errorclass 폼 컨포넌트 기능 checkBox, radioButton, List 등을 편리하게 사용할 수 있는 기능 지원 스프링의 메시지 국제화 .. 스프링mvc2편 타임리프 - 기본기능 : 템플릿 레이아웃2 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 레이아웃을 적용하는 것에 있어서 레이아웃 H1 레이아웃 컨텐츠 레이아웃 푸터 메인 페이지 컨텐츠 메인 페이지 포함 내용 레이아웃 H1 메인 페이지 컨텐츠 메인 페이지 포함 내용 레이아웃 푸터 @RequestMapping(””) vs @RequestMapping(”/”) 무엇을 배웠나요? @RequsetMapping("/test") @RequestMapping("/") 둘다 동일하다. DefaultAnnotationHandlerMapping에서 “/”가 붙지 않을 경우 따로 붙혀준다. Spring5이후부터는 PatternsRequestCondition에서 붙혀준다. 인프런 질문(경로 표준화에 대해서 이해가 부족해서 제대로 이해하지 못함) 관련 포스팅 궁금한 점은 무엇인가요? 경로 표준화가 무엇인가. 스프링MVC2편 타임리프 - 기본기능 : 템플릿 레이아웃1 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 이전 에서는 일부 코드 조각을 가져와서 사용했다면 이번에는 개념을 확장해서 코드 조각을 레이 아웃에 넘겨서 사용하는 방법이다. common_header(~{::title},~{::link}) 가 핵심이다. ::title은 현재 페이지의 title은 현재 페이지의 title 태그들을 전달한다. ::link는 현재 페이지의 link 태그들을 전달한다. 메인 타이틀이 전달한 부분으로 교체되었다. 공통 부분은 그대로 유지되고, 추가부분에 전달한 들이 포함된것을 확인할 수 있다. 레이아웃 개념을 두고, 그 레이아웃에 필요한 코드 조각을 전달해서 완성하는 것으로 이해하면 된다. (이전 에서는 템플릿 조각을 가져오고 파라미터를 넘겨서 가져.. 스프링MVC2편 타임리프 - 기본기능 : 템플릿 조각 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? th:fragment 가 있은 태그는 다른 곳에 포함되는 코드 조각으로 이해하면 된다. template/fragment/footer :: copy, template/fragment/footer.html 템플릿에 있는 th:fragment=”copy” 라는 부분을 템플릿 조각으로 가져와서 사용한다는 의미이다. 부분 포함 insert th:insert를 사용하면 현재 태그 내부에 추가 된다. 부분 포함 replace th:replace 를 사용하면 현재 태그(div)를 대체한다. 부분 포함 단순 표현식~{…} 을 사용하는 것이 원칙이지만 코드가 단순하면 이 부분을 생략할 수 있다. 파라미터를 전달하여 동적으로 조각을 렌더링 할 수.. 이전 1 2 3 다음