BackEnd 108

타임리프-속성값 설정

타임리프는 속성값을 th:*로 지정한다.th:*로 속성을 적용하면 기존 속성을 대체한다. 속성 설정속성 추가- th:attrappend = - th:attrprepend = - th:classappend = checked 처리- checked o - checked x - checked=false   소스코드를 보면 다 th:로 대체 된것을 확인할 수 있다. th:attrappend  : 속성 값의 뒤에 값을 추가한다.th:attrprepend  : 속성 값의 앞에 값을 추가한다. th:classappend : class 속성에 자연스럽게 추가한다.   th:checked="false"위와 같이 코드를 작성하면 checked값이 false인 경우 checked 속성 자체를 제거한다.

BackEnd/Thymeleaf 2024.07.19

타임리프 - 리터럴

타임리프에서 문자 리터럴은 항상 ' '작은 따옴표로 감싸줘야 한다. 하지만 공백없이 이어지는 문자 리터럴은 작은 따옴표로 감싸지 않아도 된다.ex)  아래 코드와 같이 공백이 있으면 오류가 생긴다. 작은 따옴표로 감싸면 다시 정상작동한다.  리터럴 "hello world!" = --> 'hello' + ' world!' = 'hello world!' = 'hello ' + ${data} = 리터럴 대체 |hello ${data}| =   리터럴 대체(Literal substitutions)"|hello ${data}|" 리터럴 대체 문법을 사용하면 템플릿을 사용하는 것 처럼 편리하게 이용할 수 있다.

BackEnd/Thymeleaf 2024.07.16

타임리프-URL 링크

타임리프에서 URL을 생성하는 방법에 대해서 알아보자. @GetMapping("link")public String link(Model model){ model.addAttribute("param1","data1"); model.addAttribute("param2","data2"); return "basic/link";} URL 링크 basic url hello query param path variable path variable + query parameter 실행 후 페이지 소스 보기와 비교해보면 차이점을 확인 할 수 있다.  @{/hello} ===> /hello @{/hello(param1=${param1}, param2=${param2})} =..

BackEnd/Thymeleaf 2024.07.16

텍스트 - text, utext

HTML의 콘텐츠에 데이터를 출력할때는 아래 코드와 같이 사용하면 된다.  HTML 테그의 속성이 아니라 HTML 콘텐츠 영역안에서 직접 데이터를 출력하고 싶으면 다음과 같이 [[ ... ]]를 사용하면 된다.[[${data}]] 콘텐츠에 데이터를 출력하는 간단한 예제 코드를 통해 알아보자  package hello.thymeleaf.basic;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping..

BackEnd/Thymeleaf 2024.07.15

간단한 Web페이지 프로젝트(7) - RedirectAttributes

요구사항 상품을 추가하면 저장이 되었다는 메시지를 띄우기.  개발 RedirectAttribute를 사용하여 URL 인코딩도 하고, pathVariable, 쿼리 파라미터까지 처리할 수 있다. @PostMapping("/add")public String addItemV6(Item item, RedirectAttributes redirectAttributes) { Item savedItem=itemRepository.save(item); redirectAttributes.addAttribute("itemId",savedItem.getId()); redirectAttributes.addAttribute("status",true); return "redirect:/basic/items/{..

BackEnd/Spring Boot 2024.07.07

간단한 Web페이지 프로젝트(6) - PRG Post/Redirect/Get

지금까지 진행하고 있던 프로젝트에 문제점이 있다.◆ 상품 등록을 완료하고 새로고침을 누르면 상품이 계속 중복 등록이 되는 것을 확인할 수 있다.문제 원인 웹 브라우저 새로고침은 마지막에 서버에 전송한 데이터를 다시 전송한다.상품을 등록할때 POST/add를 이용해서 상품 데이터를 서버로 등록하는데,이 상태에서 새로고침을 하면 POST/add를 한번 더 하게 되므로 ID만 다르게 상품이 계속 등록되는 것이다.   문제 해결법 이러한 문제를 해결하기 위해서 리다이렉트를 이용해주면 된다.새로 고침 문제를 해결하기 위해 상품 저장 후에 뷰 템플릿으로 이동하는것이 아니라, 상품 상세 화면으로 리다이렉트를 호출해주면 된다. @PostMapping("/add")public String addItemV5(Item it..

BackEnd/Spring Boot 2024.07.07

간단한 Web페이지 프로젝트(5) - 상품 수정

목표 상품 수정을 가능하게 하기상품 수정 폼에서 저장 버튼을 누르면 상품 수정이 완료되고, 취소 버튼을 누르면 다시 상품 상세 폼으로 돌아오게 하기 개발 Get ==> 상품 수정 폼@GetMapping("/{itemId}/edit")public String editForm(@PathVariable Long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/editForm";} 수정할 정보를 조회하고, 수정용 폼 뷰를 호출  Post ==> 상품 수정 처리@PostMapping("/{itemId}/edit") public String ..

BackEnd/Spring Boot 2024.07.06