-
thymeleaf
-
문제상황
- 상품 리스트 페이지에서 상품을 클릭하면 해당 상품 정보를 수정할 수 있는 페이지가 로드됨
- 해당 페이지에서 폼을 작성하면, 해당 상품 정보가 DB에 update되야하고 다시 상품 리스트 페이지로 돌아가야함
-
어려웠던 것
- 상품 리스트 페이지의 상품 정보는 view에 전달된 model을 thymeleaf로 뿌려준것
- model의 pk(productId)를 상품 수정 페이지로 전달하고, 이 페이지에서 form 제출시 해당 handler에게 pk를 전달해야 DB update 가능
- thymeleaf 사용이 매우 미숙해서 List를 product로 반복하는 것 이후에 product의 속성을 접근해야하는 것을 몰랐음(Products에서 product 빼냄과 동시에 tr 태그에서 product.productId 접근하려 했음)
- handler mapping이 잘 안되서 많이 헤맴(href 사용방식, pathvariable/queryParam 고민 등)
- th(column)이 아니라 tr(line)을 클릭하면 상세페이지로 넘어가게 하고 싶었는데 tr에서 처리하지 못해서 productId가 있는 th에서 처리함
-
해결과정
- productId 클릭시 @PathVariable로 productId를 넘겨주고, modifyProduct()에서 Id 읽고 "modify-product" view에 model로 등록.
- modify-product에서 model을 접근하고, form 제출시 model.productId를 다시 modifyProduct()로 전송
- modifyProduct()에서 productId로 productService.update() 호출하여 정보 수정요청후 "product-list" 페이지로 redirect
- 궁금한것
- 위 문제에서 최선의 해결책
- queryParam VS PathVariable
- view redirect VS handler 연결