Spring/Spring MVC
-
Spring MVC - 스프링에서 제공하는 MessageSource 사용 방법 (메시지와 국제화 기능)Spring/Spring MVC 2022. 2. 5. 03:04
MessageSource 설정 MessageSource 사용 메시지(Message)와 국제화 기능 HTML이나 Java에서 사용하는 메시지를 관리해주는 것이 메시지 기능이다. 예를 들어 특정 메시지가 한 곳이 아닌 여러 곳에서 사용하고 있을 때, 수정이 필요하면 각 파일마다 해당 메시지를 찾아서 수정해야 한다. 1~2개면 괜찮겠지만 수십 곳에서 사용한다면 찾아서 수정하는 게 여간 불편한 게 아니다. 이러한 불편함을 스프링이 기본적인 메시지와 국제화 기능을 모두 제공하고, 타임리프도 스프링에서 제공하는 메시지와 국제화 기능을 편리하게 사용할 수 있도록 제공한다. 국제화 기능이란 메시지 파일을 각 나라별로 관리하는 기능을 말한다. 서버는 HTTP accept-language 해더 값을 이용하여 해당하는 me..
-
Spring MVC - 타임리프(Thymeleaf)을 사용한 Select box(셀렉트 박스)Spring/Spring MVC 2022. 2. 4. 17:29
타임리프(Thymeleaf)를 사용한 Select box(셀렉트 박스) 셀렉트 박스는 여러 선택지 중에 하나를 선택할 때 사용할 수 있다. 자바 객체를 활용해서 셀렉트 박스를 사용해 보자. /** * FAST: 빠른 배송 * NORMAL: 일반 배송 * SLOW: 느린 배송 */ @Data @AllArgsConstructor public class DeliveryCode { private String code; private String displayName; } Select Box을 설명하기 위해 생성한 클래스 @ModelAttribute("deliveryCodes") public List deliveryCodes() { List deliveryCodes = new ArrayList(); deliver..
-
Spring MVC - 타임리프(Thymeleaf)을 사용한 Radio button(라디오 버튼)Spring/Spring MVC 2022. 2. 4. 16:39
타임리프(Thymeleaf)을 사용한 Radio button(라디오 버튼) 라디오 버튼은 여러 선택지 중에 하나를 선택할 때 사용할 수 있다. 자바 Enum을 활용해서 라디오 버튼을 사용해 보자 public enum ItemType { BOOK("도서"), FOOD("식품"), ETC("기타"); private final String description; ItemType(String description) { this.description = description; } public String getDescription() { return description; } } Radio Button을 설명하기위해 생성한 Enum 클래스 @ModelAttribute("itemTypes") public ItemT..
-
Spring MVC - 타임리프(Thymeleaf)을 사용한 multi checkbox(멀티 체크박스)Spring/Spring MVC 2022. 2. 4. 16:08
타임리프(Thymeleaf)를 사용한 multi checkbox 위 이미지와 같이 checkbox를 1개 이상 사용하는 멀티 checkbox를 어떻게 사용하는지에 대해 알아보자. @ModelAttribute("regions") public Map regions(){ Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions; } 컨트롤이 호출할 때마다 자동으로 실행되어 Model에 return 된 객체를 담아준다. 호출되는 컨트롤러 내부에 작성 multi checkbox를 설명하기위해 작성한 코드로 좋은 방법은 아니다. th:e..
-
Spring MVC - 타임리프(Thymeleaf)을 사용한 단일 checkboxSpring/Spring MVC 2022. 2. 4. 14:38
단일 체크 박스를 타임리프로 사용하기 전에 기본적인 단일 체크 박스가 스프링에서 어떻게 동작하는지 알아보자 판매 여부 판매 오픈 form 안에 위 코드를 삽입하여 값이 잘 넘어오는지 logging을 통해 확인해보면 다음과 같다. checkbox를 체크하면 HTML Form에서 open=on 이라는 값이 넘어간다. 스프링은 이 on이라는 문자를 Boolean 데이터 타입인 true 값으로 자동 변환해준다. 그런데 checkbox를 체크하지 않으면 HTML Form은 open이라는 필드 자체를 서버로 전송은 하지 않아 logging으로 확인해보면 null값인 것을 확인할 수 있다. 여기서 문제가 발생하는데 만약 수정 Form에서 checkbox가 체크가 되어있는 것을 체크 해제하고 수정했을 시 checkbo..
-
Spring MVC - 타임리프(Thymeleaf)를 이용한 입력 폼(Form) 사용법Spring/Spring MVC 2022. 2. 4. 12:13
타임리프(Thymeleaf)를 이용한 입력 폼(Form) 사용법 th:object - 커멘드 객체를 지정하여 Form에서 사용 *{ ... } - 선택 변수식이라고 한다. th:object 에서 선택한 객체를 편리하게 프로퍼티 접근법을 이용할 수 있다. th:field - HTML 태그의 id, name, value 속성을 자동으로 처리해 준다. 등록 form 사용 예시 th:action - 값을 안 넣어주면 같은 URL에 POST 메서드 방식으로 요청한다. th:object="${item}" - request 영역에 저장되어있는 item 객체를 가져온다 - 해당 폼에서 item 객체 사용 가능 th:field="*{itemName}" - 선택 변수 식이라고 한다. th:object에서 선택한 객체 프로..
-
Spring MVC - 타임리프(Thymeleaf) 템플릿 조각과 레이아웃 (th:fragment, th:insert, th:replace)Spring/Spring MVC 2022. 2. 3. 14:25
타임리프(Thymeleaf) 템플릿 조각과 레이아웃 웹 페이지를 개발할 때는 공통 영역이 많이 들어있다. 예를 들어 상단 메뉴, 하단 홈페이지 정보, 좌측 카테고리 등 여러 페이지에서 공통으로 사용하는 영역들이 있다. 이런 공통 영역 부분들을 페이지마다 코드 작성을 하면 코드 중복이 일어나고, 수정을 하면 공통 영역을 사용하는 모든 페이지를 각각 수정해야 하는 번거로움이 생긴다. 타임리프는 이러한 문제를 해결하기 위해 템플릿 조각과 레이아웃 기능을 지원한다. 타임리프(Thymeleaf) 템플릿 조각 일부 코드를 가져와서 사용하는 방법이다. 템플릿 조각을 이용하기 위해 footer.html 파일을 우선 만들어 준다. 푸터 자리 입니다. 파라미터 자리 입니다. 해당 태그들은 다른 HTML 파일에서 th:in..
-
Spring MVC - 타임리프(Thymeleaf) 블록과 자바스크립트 인라인Spring/Spring MVC 2022. 2. 3. 11:25
타임리프(Thymeleaf) 블록 타임리프의 특성상 HTML 태그 안에 기능을 정의해서 사용하여 불편한 점이 있었다. 이러한 불편함을 해결하기 위해 타임리프는 th:block을 제공한다. 아래 코드를 보면 태그가 태그 2개를 감싸고 있다. 태그로 감싸주었기 때문에 첫번째 태그, 두번째 태그가 순서대로 반복문이 실행된다. 만약 태그로 감싸주지 않고 각각의 태그에 반복문을 넣으면 첫 번째 태그의 반복문이 끝나야 두번째 태그의 반복문이 실행되는 결과가 발생한다. User 객체가 3개 저장된 List 컬렉션의 반복 사용자 이름1 사용자 나이1 요약 서버를 가동시켜 웹브라우저에서 HTML의 소스 코드를 보면 다음과 같다. 사용자 이름1 userA 사용자 나이1 10 요약 userA / 10 사용자 이름1 user..