
orderDTO.setAddressPk(Integer.parseInt(request.getParameter("addressPk")));
이 부분을 보면
JSP에서 addressPK를 전달하지 않았거나 이름이 잘못되었거나 등등인 상태이다
< ornamentDetailPage.jsp > 수정
// 즉시 구매시 form 동적 생성하여 보내기
$('#buy-now').on('click', function (e) {
e.preventDefault();
if(${empty accountPk}){
alert("해당 서비스를 이용하려면 로그인을 먼저 해주세요");
return;
}
const itemPk = ${empty itemData.itemPk ? 0 : itemData.itemPk};
const itemCount = parseInt($('#item-count').val(), 10);
const itemPrice = ${empty itemData.itemPrice ? 0 : itemData.itemPrice};
const addressPk = $('#selected-address').val(); // select 또는 hidden input
const form = $('<form>', {
method: 'POST',
action: '${pageContext.request.contextPath}/paymentPage.do'
});
form.append(`<input type="hidden" name="itemPk" value="\${itemPk}">`);
form.append(`<input type="hidden" name="itemCount" value="\${itemCount}">`);
form.append(`<input type="hidden" name="itemPrice" value="\${itemPrice}">`);
form.append(`<input type="hidden" name="condition" value="buyNow">`);
form.append(`<input type="hidden" name="addressPk" value="${addressPk}">`);
$('body').append(form);
form.submit();
});
< payment.jsp > 수정
name="addressPk" 추가
: 이렇게 해서 선택한 배송지 PK를 form submit 시 서버로 전달하도록 했다
또 밑에 코드에서 서버에서 addressDatas를 JSON 문자열로 변환한 뒤, JS에서 파싱해서 배열로 사용하도록 수정을 해주었다
const addressDatas = ${addressDatas};
const select = $("#select-address");
// 주소 데이터를 받으면
console.log(addressDatas);
if (Array.isArray(addressDatas) && addressDatas.length > 0) {
addressDatas.forEach(address => {
$("<option>", {
value: address.addressPk,
text: address.addressName,
selected: address.isDefaultAddress === true
}).appendTo(select);
});
}
// 주소 데이터가 호옥시라도 들어오지 않는다면
else {
$("<option>", {
value: "",
text: "주소를 로드하지 못했습니다",
disabled: true,
selected: true
}).appendTo(select);
}
1. <select> 태그에 name="addressPk" 추가 → form submit 시 서버로 전달
2. JS에서 addressDatas를 배열로 안전하게 사용 → 서버에서 JSON으로 변환 후 JSP에 전달
'🎅 오너먼트 프로젝트' 카테고리의 다른 글
| 로그아웃 "모달창" 띄우기 (0) | 2025.12.28 |
|---|---|
| 결제 API (with 페이 디벨롭퍼) (0) | 2025.12.28 |
| 상품 상세 보기에서 "바로 구매" 시 빈문자열로 넘어오는 a태그 (0) | 2025.12.24 |
| JDBC 오너먼트 프로젝트용 계정 생성하고 사용해보기 (0) | 2025.12.22 |
| 장바구니 페이지를 AJAX로 수량 변경, 삭제, 총액 업데이트 진행하기 (0) | 2025.12.18 |