🎅 오너먼트 프로젝트

상품 상세 보기에서 "바로 구매" 시 빈문자열로 넘어오는 a태그

보배 진 2025. 12. 24. 11:05

 

 

에러 발생

request.getParameter가 빈 문자열인데

이걸 Integer.parseInt("") 하니 에러가 발생했다

 

JSP에서 buyNow.do로 값이 안넘어오고 있다

 

 

int itemPk    = Integer.parseInt(request.getParameter("itemPk"));
int itemCount = Integer.parseInt(request.getParameter("itemCount"));
int itemPrice = Integer.parseInt(request.getParameter("itemPrice"));

 

여기서 빈문자열이 있기 때문이다

 

BuyNowAction.java 파일을 맨 뒤에 

코드를 넣어 값이 넘어오는지 확인해본다

System.out.println("itemPk = [" + request.getParameter("itemPk") + "]");
System.out.println("itemCount = [" + request.getParameter("itemCount") + "]");
System.out.println("itemPrice = [" + request.getParameter("itemPrice") + "]");

 

 

 

이렇게 빈 문자열이 출력된다

 

buyNow.do 요청에 파라미터가 하나도 실려오지 않는다는 것이 맞았다

temPk, itemCount, itemPrice를 포함해야 한다

 

 


 

 

 

원인

<a> 태그는 값을 전송하지 않는다

 

내가 처음 작성한 코드

<a href="#" id="buy-now"
   data-item-pk="${itemData.itemPk}"
   data-item-price="${itemData.itemPrice}">
   즉시 구매하기
</a>

data-* 속성은 서버로 자동 전송되지 않음

 

 

 

 

 

 

 

 

 

해결 방법

JS에서 form을 만들어서 POST로 전송

 

수정 코드

$('#buy-now').on('click', function (e) {
  e.preventDefault();

  const itemPk = $(this).data('item-pk');
  const itemPrice = $(this).data('item-price');
  const itemCount = $('#item-count').val();

  const form = $('<form>', {
    method: 'post',
    action: 'buyNow.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}">`);

  $('body').append(form);
  form.submit();
});