🎅 오너먼트 프로젝트

주소를 로그하지 못하였습니다

보배 진 2025. 12. 27. 21:47

 

 

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에 전달