목록BE (354)
오봉이와 함께하는 개발 블로그
변수 - SpringEL 타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다. 변수 표현식 : ${...} 이 변수 표혁식에는 스프링EL 이라는 스프링이 제공하는 표현식을 사용할 수 있다. BasicController 추가 @GetMapping("/variable") public String variable(Model model) { User userA = new User("userA", 10); User userB = new User("userB", 20); List list = new ArrayList(); list.add(userA); list.add(userB); Map map = new HashMap(); map.put("userA", userA); map.put("userB", userB)..
텍스트 - text, utext 타임리프의 가장 기본 기능이다. 타임리프는 기본적으로 HTML 태그 속성에 기능을 정의해서 동작한다. HTML의 콘텐츠에 데이터를 출력할 때는 th:text를 사용하면 된다. HTML 태그의 속성이 아니라 HTML 콘텐츠 영역안에서 직접 데이터를 출력하고 싶으면 [[...]]를 사용하면 된다. 컨텐츠 안에서 직접 출력하기 = [[${data}]] BasicController @Controller @RequestMapping("/basic") public class BasicController { @GetMapping("text-basic") public String textBasic(Model model) { model.addAttribute("data", "Hello S..
타임리프 소개 공식 사이트 : https://www.thymeleaf.org/ 공식 메뉴얼 - 기본 기능 : https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 공식 메뉴얼 - 스프링 통합 : https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 타임리프 특징 서버 사이드 HTML 렌더링(SSR) 네츄럴 템플릿 스프링 통합 지원 서버 사이드 HTML 렌더링 (SSR) 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다. 네츄럴 템플릿 타임리프는 순수 HTML을 최대한 유지하는 특성이 있다. 타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bBQINx/btrJIrUppIr/6kusOmMxqlXrqS6ZESWXo0/img.png)
PRG Post/Redirect/Get /** * @ModelAttribute 자체 생략 가능 * model.addAttribute(item) 자동 추가 * */ @PostMapping("/add") public String addItemV4(Item item) { itemRepository.save(item); return "basic/item"; } 해당 컨트롤러는 심각한 문제가 있다. 등록을 완료하고 새로고침을 클릭하면 계속해서 중복 등록되는 것을 확인할 수 있다. 전체 흐름 상품 목록에서 상품 등록 폼으로 이동 등록 폼에서 저장을 누르면 저장이 되며 상품 저장 컨트롤러가 상품 상세 뷰를 호출 URL은 상품 저장 URL이 남아 있다. 새로고침 하면 상품 저장 URL이 그대로 입력됨 중복 등록 POS..
@ModelAttribute @PostMapping("/add") public String addItemV1(@RequestParam("itemName") String itemName, @RequestParam("price") int price, @RequestParam("quantity") Integer quantity, Model model) { Item item = new Item(); item.setItemName(itemName); item.setPrice(price); item.setQuantity(quantity); itemRepository.save(item); model.addAttribute("item", item); return "basic/item"; // model로 넣은 item..