문제]
product > view 에서 장바구니 담기 submit 클릭 시,
shop > cartinfo 로 정보들이 전달되는데 상품금액(cs.money)이 계속 0으로 뜬다
시도]
1. cartmapper.xml 에 쿼리가 cs_money = cs_cnt * p_price 인 것 확인
2. cartmappertest 에서 testInsertSub 단위테스트 시 장바구니에 상품을 제대로 들어갔으며
상품금액도 계산문이 처리된 값(cs_money = cs_cnt * p_price)으로 들어갔다
3. 계산은 제대로 되지만, view단에 제대로 뜨지 않는 걸로보아 값이 넘어가는 과정에서 문제가 있음으로 생각함
product > view 의 파일 중 cs_cnt와 장바구니 담기의 submit이 각자 form으로 묶여있었음
cs_cnt와 submit을 같은 폼으로 합체시켜놓으니 cs_cnt가 전달되어 cs_money가 제대로 뜸
(의문인 건 p_price는 전달안했는데 어떻게 계산이 나오는 거지.....)
꿉꿉한 해결]
<form method="post" action="/shop/cart">
<div class="form-group row">
<div class="col-sm-6 mb-3 mb-sm-0">
<img src="/resources/product/${product.p_code}.jpg" height="200">
</div>
</div>
<div class="form-group row">
<div class="col-sm-6 mb-3 mb-sm-0">
<label>상품명</label>
<input type="text" class="form-control" value="${product.p_name}" readonly>
</div>
</div>
<div class="form-group row">
<div class="col-sm-6 mb-3 mb-sm-0">
<label>가격</label>
<input type="text" class="form-control" value="${product.p_price}" readonly>
</div>
</div>
<select name="cs_cnt">
<c:forEach var="count" begin="1" end="10" step="1">
<option value="${count}">${count}개</option>
</c:forEach>
</select>
<div class="form-group row">
<div class="col-sm-6 mb-3 mb-sm-0">
<input type="hidden" name="p_code" value="${product.p_code}">
<input type="submit" value="장바구니 담기">
</div>
</div>
<div class="form-group row">
<div class="col-sm-6 mb-3 mb-sm-0">
<input type="hidden" name="p_code" value="${product.p_code}">
<input type="submit" value="바로구매">
</div>
</div>
</form>
부분만 form으로 묶는건 아닌거같아서 일단 전체를 form으로 잡아놨는데
보낼필요 없는 정보까지 보내면 데이터 전송 처리 과정에 시간을 오래 잡아 먹진 않는건가
생각이 필요하다
댓글