์ผํ๋ชฐ ํ๋ก์ ํธ(12) ํ์ MY PAGE - ๊ตฌ๋งค ๋ด์ญ (2) ๊ฒ์ ๊ธฐ๋ฅ (๋ณด์)
---ํ์ฌ๊น์ง ๋ถ์กฑํ ๊ธฐ๋ฅ
๊ตฌ๋งค ๋ชฉ๋ก ํ์ด์ง์ ๋ฉ๋ด ๋์ฐ๊ธฐ
> interceptorConfig์ ์นดํ ๊ณ ๋ฆฌ ๋ชฉ๋ก ์กฐํํ ๋ ๊ตฌ๋งค ๊ด๋ จ ํ์ด์ง ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๋ ์ถ๊ฐ
ํ์์ด ๋ณด๋ ์ฌ์ด๋ ๋ฉ๋ด ํด๋ฆญ ์ ํด๋น ๋ฉ๋ด ํ๋์ ๋ณ๊ฒฝ
personal_side.html์์ ๋ฉ๋ด์ active ์์ฑ์ ๋ฃ์ผ๋ฉด ํด๋ฆญ ์ ์ ๋ฐ๋.
์ด๋ค ๋ฉ๋ด๋ฅผ ํด๋ฆญํด์ ํด๋น ํ์ด์ง์ ์๋์ง ์ ์ ์๋๋ก ๋ฐ์ดํฐ ๋๊ธฐ๋ ์์ ํ์.
db ์์ ํด์ ๋ฉ๋ด ๋ถ๋ฌ์จ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ์์์ ๊ฐ ์ง์ .
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="personalSideFragment">
<div class="row">
<div class="col"> <!-- active -->
<div class="list-group">
<!-- ํ์ ์ฌ์ด๋ ๋ฉ๋ด -->
<a href="/cart/cartList?personalMenu=1"
class="list-group-item list-group-item-action">
์ฅ๋ฐ๊ตฌ๋ ๋ชฉ๋ก
</a>
<a href="/buy/buyList?personalMenu=1"
class="list-group-item list-group-item-action">
๊ตฌ๋งค ๋ด์ญ
</a>
<a href=""
class="list-group-item list-group-item-action">
๊ฐ์ธ์ ๋ณด์์
</a>
</div>
</div>
</div>
</th:block>
</html>
BuyController ์์ฑ
1.๊ตฌ๋งค๋ด์ญ ๋ฉ๋ด ์์
ํด๋น ํ์ด์ง ์ค๋ controller ์์
๋งค๊ฐ๋ณ์๋ก String personalMenu ๋ฃ๊ธฐ.
๋ฐ์์จ ๋ฐ์ดํฐ html๋ก ๋๊ฒจ์ฃผ๋ฉด ๊ฐ์ด ํ๋ฉด ์ด๋ฆฌ๋ personal_side.html์์๋ ๋ฐ์ดํฐ ๋ฐ์์ง.
//๊ตฌ๋งค ๋ด์ญ ํ์ด์ง
@RequestMapping("/buyList") //get,post ๋ฐฉ์ ๋ ๋ค ๋ฐ๊ฒ
public String buyList(HttpSession session, Model model, BuyVO buyVO, String personalMenu) {
//์ค๋ ๋ ์ง
String nowDate = DateUtil.getNowDateToString(); //2023-04-12
//๋ฉ์๋ ์ค๋ฒ๋ก๋ฉํ๋ฉด ๋ ์ง ํ์ ๋ฐ๊ฟ ์ ์์
//String nowDate1 = DateUtil.getNowDateToString("."); //2023.04.12
//์ด๋ฒ ๋ฌ์ ์ฒซ ๋
String firstDate = DateUtil.getFirstDateOfMonth();
//์ฟผ๋ฆฌ ๋น ๊ฐ memId ๊ฐ์ ธ์ค๊ธฐ
MemberVO loginInfo = (MemberVO)session.getAttribute("loginInfo");
buyVO.setMemId(loginInfo.getMemId());
//memId ๋ฐ๋ ๊ฒ์์ vo๋ก ์์
List<BuyVO> buyList = buyService.getBuyList(buyVO);
for(BuyVO e : buyList) {
System.out.println(e);
}
model.addAttribute("buyList", buyList);
//๋์ด์จ ๋ ์ง ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๊ธฐ๋ณธ ๊ฐ์ผ๋ก buyVO์ ์์ ๊ธฐ๊ฐ, ๋๋๋ ๊ธฐ๊ฐ ๋ฐ์ดํฐ ์ธํ
if(buyVO.getFromDate() == null) {
buyVO.setFromDate(firstDate);
}
if(buyVO.getToDate() == null) {
buyVO.setToDate(nowDate);
}
//์ฌ์ด๋ ๋ฉ๋ด(์ฌ์ด๋ ๋ฉ๋ด ํด๋ฆญ ์ ์ ์ฃผ๊ธฐ ์ํ ๋ฐ์ดํฐ)
model.addAttribute("personalMenu", personalMenu);
return "content/buy/buy_list";
}
๋์ด์จ personalMenu ๋ฐ์ดํฐ์ ๋ฐ๋ผ th:classappend ์์ฑ ์ฌ์ฉ.
์ผํญ์ฐ์ฐ์๋ก ๋ฐ์ดํฐ ํ๋จํ์ฌ active ์์ฑ ์ถ๊ฐ
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="personalSideFragment">
<div class="row">
<div class="col"> <!-- active : ํด๋ฆญ ์ ๋ฉ๋ด ์ ์ง์ -->
<div class="list-group">
<!-- ํ์ ์ฌ์ด๋ ๋ฉ๋ด -->
<a href="/cart/cartList?personalMenu=1"
class="list-group-item list-group-item-action"
th:classappend="${personalMenu == '1' ? 'active' : ''}"> <!-- String์ผ๋ก ๋ฐ์์ ๋ฌธ์์ด ์ธ์์ ์ํด '' ๊ฐ์ธ์ฃผ๊ธฐ -->
์ฅ๋ฐ๊ตฌ๋ ๋ชฉ๋ก
</a>
<a href="/buy/buyList?personalMenu=2"
class="list-group-item list-group-item-action"
th:classappend="${personalMenu == '2' ? 'active' : ''}">
๊ตฌ๋งค ๋ด์ญ
</a>
<a href=""
class="list-group-item list-group-item-action">
๊ฐ์ธ์ ๋ณด์์
</a>
</div>
</div>
</div>
</th:block>
</html>
2. ์ฅ๋ฐ๊ตฌ๋ ๋ฉ๋ด๋ ๋์ผํ๊ฒ ์์
ํ์ฌ๊น์ง ์ฌ์ด๋ ๋ฉ๋ด ํด๋ฆญํ๋ฉด active ์์ฑ ์ ์ฉ๋จ.
mypage์์ ์ฅ๋ฐ๊ตฌ๋ ๋ชฉ๋ก ์ค๋ ๊ฒฝ์ฐ๋ ์ ์ฉ ์ ๋จ.
์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง ์ฌ ๋ @RequestParam ์ด๋ ธํ ์ด์ ๊ณผ ์์ฑ ์ฌ์ฉํ์ฌ ๋ํดํธ ๊ฐ 1๋ก ์ฃผ๊ธฐ.
//์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง //@RequestParam : ์์ฒญ ์์ ๋์ด์ค๋ ๋ฐ์ดํฐ
@GetMapping("/cartList") //(required = false) : ๋์ด์ค๋ ๋ฐ์ดํฐ๊ฐ ํ์ ๊ฐ์ ์๋(๋ฐ์ดํฐ ๋์ด์ฌ ๋๋ ์๊ณ ์๋ ๋๋ ์์)
public String cartList(Model model, HttpSession session
,@RequestParam(required = false, defaultValue = "1") String personalMenu) {
//์ธ์
์์ memId ๋นผ๊ธฐ //defaultValue = "1" : ๋ฐ์ดํฐ ์ ๋์ด์ค๋ฉด ๊ธฐ๋ณธ์ผ๋ก 1 ์ค.
MemberVO loginInfo = (MemberVO)session.getAttribute("loginInfo");
//๋ก๊ทธ์ธ ์ ๋ณด ์์ผ๋ฉด ์ํ ๋ชฉ๋ก์ผ๋ก
if(loginInfo == null) {
return "redirect:/item/itemList";
}
//์ฅ๋ฐ๊ตฌ๋ ๋ชฉ๋ก ์กฐํ
List<CartVO> cartList = cartService.getCartList(loginInfo.getMemId());
model.addAttribute("cartList", cartList);
//์ด ๊ตฌ๋งค๊ธ์ก ๊ณ์ฐ
int finalPrice = 0;
for(CartVO cart : cartList) {
finalPrice += cart.getTotalPrice();
}
model.addAttribute("finalPrice", finalPrice);
//์ฌ์ด๋ ๋ฉ๋ด(์ฌ์ด๋ ๋ฉ๋ด ํด๋ฆญ ์ ์ ์ฃผ๊ธฐ ์ํ ๋ฐ์ดํฐ)
model.addAttribute("personalMenu", personalMenu);
return "content/cart/cart_list";
}