목록BE/Thymeleaf (25)
오봉이와 함께하는 개발 블로그
체크 박스 - 단일1 단순 HTML 체크 박스 resources/templates/form/addForm.html에 추가하자 판매 여부 판매 오픈 FormItemController 추가 @PostMapping("/add") public String addItem(Item item, RedirectAttributes redirectAttributes) { log.info("item.open={}", item.getOpen()); ... } FormItemController에 @Slf4j추가 실행 로그 FormItemController : item.open=true //체크 박스를 선택하는 경우 FormItemController : item.open=null //체크 박스를 선택하지 않는 경우체크 박스를 체..
요구사항 추가 타임리프를 사용해서 폼에서 체크박스, 라디오 버튼, 셀렉트 박스를 편리하게 사용하는 방법을 알아보자 요구사항이 추가된다. 판매 여부 판매 오픈 여부 체크 박스로 선택할 수 있다. 등록 지역 서울, 부산, 제주 체크 박스로 다중 선택할 수 있다. 상품 종류 도서, 식품, 기타 라디오 버튼으로 하나만 선택할 수 있다. 배송 방식 빠른 배송 일반 배송 느린 배송 셀렉트 박스로 하나만 선택 가능 ItemType - 상품 종류 public enum ItemType { BOOK("도서"), FOOD("음식"), ETC("기타"); private final String description; ItemType(String description) { this.description = description;..
입력 폼 처리 타임리프가 제공하는 입력 폼 기능을 적용해서 폼 코드를 타임리프가 지원하는 기능을 사용해서 효율적으로 개선해보자. th:object : 커맨드 객체를 지정한다. *{...} : 선택 변수 식이라고 한다. th:object에서 선택한 객체에 접근 th:field : HTML 태그의 id, name, value속성을 자동으로 처리해준다. 렌더링 전 렌더링 후 등록 폼 th:object를 적용하려면 먼저 해당 오브젝트 정보를 넘겨야 한다. 등록 폼이기 때문에 데이터가 비어있는 빈 오브젝트를 만들어서 전달하자. @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); // 기존에는 ..
타임리프 스프링 통합 타임리프는 두 가지 메뉴얼을 제공한다. 기본 : https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 스프링 통합 : https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다. 스프링 통합으로 추가되는 기능들 스프링의 SpringEL 문법 통합 ${@myBean.doSomething()} 처럼 스프링 빈 호출 지원 편리한 폼 관리를 위한 추가 속성 th:object 기능 강화, 폼 커맨드 객체 선택 th:field, th:errors:, th:errorclass 폼 컴포넌트 기능 che..
템플릿 레이아웃 1 템플릿 조각은 일부 코드 조각을 가지고와서 사용했다면, 이번에는 개념을 더 확장해서 코드 조각을 레이아웃에 넘겨서 사용하는 방법이다. 예를 들어 메인 컨텐츠 /resources/templates/template/layout/base.html 결과 메인 컨텐츠 common_header(~{::title},~{::link})가 핵심이다. ::title은 현재 페이지의 태그들을 전달한다. ::link는 현재 페이지의 태그들을 전달한다. layoutMain.html은 메인 페이지 컨텐츠 메인 페이지 포함 내용 /resources/templates/template/layoutExtend/layoutFile.html 레이아웃 H1 레이아웃 컨텐츠 레이아웃 푸터 결과 레이아웃 H1 메인 페이지 컨..