전체 글
-
[스프링MVC - 2편] 타임리프 스프링 통합 (2)스프링&스프링부트 2025. 2. 2. 14:07
체크 박스 - 멀티FormItemController - 추가@ModelAttribute("regions")public Map regions() { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions;}@ModelAttribute의 특별한 사용법등록 폼, 상세화면, 수정 폼에서 모두 서울, 부산, 제주라는 체크 박스를 반복해서 보여주어야 한다이렇게 하려면 각각의 컨트롤러에서 model.addAttribute(...)을 사용해서 체크 박스를 구성하는 데이터를 반복해서 넣어주어야 한다 @ModelAttribute는 이렇게 컨트..
-
[스프링MVC - 2편] 타임리프 스프링 통합 (2)스프링&스프링부트 2025. 2. 2. 14:07
체크 박스 - 멀티FormItemController - 추가@ModelAttribute("regions")public Map regions() { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions;}@ModelAttribute의 특별한 사용법등록 폼, 상세화면, 수정 폼에서 모두 서울, 부산, 제주라는 체크 박스를 반복해서 보여주어야 한다이렇게 하려면 각각의 컨트롤러에서 model.addAttribute(...)을 사용해서 체크 박스를 구성하는 데이터를 반복해서 넣어주어야 한다 @ModelAttribute는 이렇게 컨트..
-
[스프링MVC - 2편] 타임리프 스프링 통합 (1)스프링&스프링부트 2025. 2. 1. 17:45
타임리프 스프링 통합타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다 스프링 통합으로 추가되는 기능들스프링의 SpringEL 문법 통합${@myBean.doSomething()}처럼 스프링 빈 호출 지원편리한 폼 관리를 위한 추가 속성th:object (기능 강화, 폼 커맨드 객체 선택)th:field, th:errors, th:errorclass폼 컴포넌트 기능checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원스프링의 메시지, 국제화 기능의 편리한 통합스프링의 검증, 오류 처리 통합스프링의 변환 서비스 통합(ConversionService) 1. 입력 폼 처리th:object : 커맨드 객체를 지정한다*{...} : 선..
-
[스프링MVC - 2편] 타임리프 기본기능 (2)스프링&스프링부트 2025. 2. 1. 15:24
연산BasicController 추가@GetMapping("/operation")public String operation(Model model) { model.addAttribute("nullData", null); model.addAttribute("data", "Spring!"); return "basic/operation";} 산술 연산 10 + 2 = 10 % 2 == 0 = 비교 연산 1 > 10 = 1 gt 10 = 1 >= 10 = = 10"> 1 ge 10 = 1 ==..
-
[스프링MVC - 2편] 타임리프 기본기능 (1)스프링&스프링부트 2025. 1. 31. 11:44
타임리프 소개타임리프 특징서버 사이드 HTML 렌더링 (SSR)네츄럴 템플릿스프링 통합 지원 1. 서버 사이드 HTML 렌더링 (SSR)타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다 2. 네츄럴 템플릿타임리프는 순수 HTML을 최대한 유지하는 특징이 있다타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다이렇게 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 타임리프의 특징을 네츄럴 템플릿(natural templates)이라 한다 3. 스프링 통합 지원타임리프는 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 ..
-
[스프링MVC - 1편] 스프링 MVC - 웹 페이지 만들기 (2)스프링&스프링부트 2025. 1. 30. 19:33
상품 목록 - 타임리프BasicItemController@Controller@RequestMapping("/basic/items")@RequiredArgsConstructorpublic class BasicItemController { private final ItemRepository itemRepository; @GetMapping public String items(Model model) { List items = itemRepository.findAll(); model.addAttribute("items", items); return "basic/items"; } // 테스터용 데이터 추가 @PostConstruct pub..
-
[스프링부트/인텔리제이] java.lang.IllegalArgumentException : Ensure that the compiler uses the '-parameters' flagerror 2025. 1. 30. 13:12
@GetMapping("/{itemId}")public String item(@PathVariable long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/item";} java.lang.IllegalArgumentException: Name for argument of type [long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. 스프링..
-
[스프링MVC - 1편] 스프링 MVC - 웹 페이지 만들기 (1)스프링&스프링부트 2025. 1. 30. 12:14
서비스 흐름 상품 도메인 개발1. Item - 상품객체@Datapublic class Item { private long id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; }} 2. ItemRepository - 상품 저장소@Repositorypublic cl..