일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 스프링 포트폴리오
- 스프링 게시판
- spring 프로젝트
- spring 쇼핑몰
- 파일 업로드
- BCrypt 적용
- 스프링 파일 삭제
- 스프링 프로젝트 기본 설정
- 정규표현식
- 스프링 프로젝트
- 스프링 쇼핑몰
- 스프링 프로젝트 설정
- 인증번호 전송
- 이미지 출력
- 스프링 업로드
- 쇼핑몰 프로젝트
- 스프링 게시판 구현
- 스프링 쇼핑몰 프로젝트
- 로그아웃 기능 구현
- 스프링 이미지
- 로그인 기능
- 회원가입 기능
- 스프링 메일 전송
- 쇼핑몰 포트폴리오
- 삭제 구현
- ResponseEntity
- arraylist
- oracle 설치방법
- Bcrypt
- 스프링 HikariCP
- Today
- Total
Kim VamPa
[Spring][쇼핑몰 프로젝트][18] 상품 등록 - 카테고리 리스트 구현 - 3 본문
프로젝트 Github : https://github.com/sjinjin7/Blog_Project
프로젝트 포스팅 색인(index) : https://kimvampa.tistory.com/188
목표
전달받은 JSON 데이터를 활용 카테고리 리스트 <select>, <option> 태그 출력
저번 포스팅에 이어서 카테고리 리스트 구현을 마무리합니다.
순서
1. 대분류 <option>
2. 중분류 <option>
3. 소분류 <option>
4. 중분류 메서드 추가 작업
5. 테스트
1. 대분류 <option>
'for'문과 Jquery의 'append'를 이용해서 <select> 태그 내부에 <option> 태그를 추가해줄 것입니다. <script> 태그 내부에 아래의 Javascript코드를 추가합니다.
for(let i = 0; i < cate1Array.length; i++){
cateSelect1.append("<option value='"+cate1Array[i].cateCode+"'>" + cate1Array[i].cateName + "</option>");
}
서버를 구동시켜서 확인을 해보면 아래와 같이 <option> 태그가 추가된 것을 볼 수 있습니다.
2. 중분류 <option>
중분류 <select> 태그에 <opion> 태그를 추가되도록 해야 하는데, 대분류의 옵션이 선택되었을 때 출력이 되어야 합니다. 따라서 대분류 옵션이 선택되었을 때 실행하는 메서드를 먼저 추가합니다.
/* 중분류 <option> 태그 */
$(cateSelect1).on("change",function(){
});
메서드 내에서 처리할 작업의 순서는 다음과 같습니다.
대분류 선택 값 가져오기
=> 중분류 <option> 태그 모두 지우기
=> 중분류 기본 <option> 태그 추가
=> 대분류 선택 값과 일치하는 'cateParent'값을 가진 중분류 <option> 태그 출력
굳이 <option> 태그를 모두 지우고 다시 추가하는 이유는 사용자가 대분류 선택하 다시 다른 대분류를 선택했을 때 기존의 <option> 태그들을 없애기 위함입니다.
대분류 선택 값을 가져오는 코드를 추가합니다.
/* 중분류 <option> 태그 */
$(cateSelect1).on("change",function(){
let selectVal1 = $(this).find("option:selected").val();
});
중분류 <option> 태그를 지우고 기본적인 <option> 태그를 추가하는 코드를 추가합니다.
/* 중분류 <option> 태그 */
$(cateSelect1).on("change",function(){
let selectVal1 = $(this).find("option:selected").val();
cateSelect2.children().remove();
cateSelect2.append("<option value='none'>선택</option>")
});
대분류 선택 값과 일치하는 'cateParent'값을 가진 중분류 <option> 태그를 출력하는 코드를 추가합니다.
/* 중분류 <option> 태그 */
$(cateSelect1).on("change",function(){
let selectVal1 = $(this).find("option:selected").val();
cateSelect2.children().remove();
cateSelect2.append("<option value='none'>선택</option>");
for(let i = 0; i < cate2Array.length; i++){
if(selectVal1 === cate2Array[i].cateParent){
cateSelect2.append("<option value='"+cate2Array[i].cateCode+"'>" + cate2Array[i].cateName + "</option>");
}
}// for
});
상품 등록 페이지로 접속하여 대분류 선택 변경에 따라 중분류 <option> 태그들이 정상적으로 출력되는지 확인합니다.
3. 소분류 <option>
소분류도 중분류와 동일한 형태의 코드를 작성해야 합니다. 소분류 <option> 태그가 출력되어야 할 시점은 중분류를 선택하였을 때입니다. 따라서 아래의 메서드 코드를 추가합니다.
/* 소분류 <option>태그 */
$(cateSelect2).on("change",function(){
});
소분류의 메서드 또한 중분류의 메서드와 동일한 과정을 처리해야 합니다.
중분류 선택 값 가져오기
=> 소분류 <option> 태그 모두 지우기
=> 소분류 기본 <option> 태그 추가
=> 중분류 선택 값과 일치하는 'cateParent'값을 가진 소분류 <option> 태그 출력
중분류의 선택 값을 가져오는 코드를 추가합니다.
/* 소분류 <option>태그 */
$(cateSelect2).on("change",function(){
let selectVal2 = $(this).find("option:selected").val();
});
소분류 <option> 태그를 모두 지우고, 기본 <option> 태그를 추가하는 코드를 작성합니다.
/* 소분류 <option>태그 */
$(cateSelect2).on("change",function(){
let selectVal2 = $(this).find("option:selected").val();
cateSelect3.children().remove();
cateSelect3.append("<option value='none'>선택</option>");
});
소분류 <option>을 출력하는 코드를 추가합니다.
/* 소분류 <option>태그 */
$(cateSelect2).on("change",function(){
let selectVal2 = $(this).find("option:selected").val();
cateSelect3.children().remove();
cateSelect3.append("<option value='none'>선택</option>");
for(let i = 0; i < cate3Array.length; i++){
if(selectVal2 === cate3Array[i].cateParent){
cateSelect3.append("<option value='"+cate3Array[i].cateCode+"'>" + cate3Array[i].cateName + "</option>");
}
}// for
});
소분류 <option> 태그들이 정상적으로 출력되는지 확인합니다.
4. 중분류 메서드 추가 작업
그런데 지금 현재의 코드에 문제가 하나 있습니다. 대분류, 중분류, 소분류 순으로 선택을 한 뒤 다시 대분류를 선택을 하게 되면 중분류는 정상적으로 기존의 코드가 없어지고 기본 <option> 태그가 출력이되는데 소분류는 기존의 <option> 태그가 그대로 있습니다.
이는 중분류 선택이 변경되었을 때만 소분류가 초기화되도록 작성하였기 때문입니다. 이를 해결하기 위해선 대분류가 변경되었을 때도 소분류가 초기화 되도록 코드를 추가해주어야 합니다. 중분류 <option> 태그를 출력하는 메서드(대분류가 변경되었을 때 동작)에 아래의 코드를 추가해줍니다.
cateSelect3.children().remove();
cateSelect3.append("<option value='none'>선택</option>");
다시 상품 등록 페이지에 접속하여 테스트해보면 모든 분류를 선택 후 대분류를 변경할 때 중분류, 소분류 또한 초기화된 것을 볼 수 있습니다.
5. 테스트
카테고리 리스트가 정상적으로 출력이 되는 건 이미 확인을 했습니다. 최종적으로 카테고리를 선택을 한 뒤에 상품이 등록이 되는지를 테스트해봅니다.
REFERENCE
DATE
- 2020.04.01
'스프링 프레임워크 > 쇼핑몰 프로젝트' 카테고리의 다른 글
[Spring][쇼핑몰 프로젝트][18] 상품 등록 - 입력란 수정& 외래키 설정 (6) | 2021.04.05 |
---|---|
[Spring][쇼핑몰 프로젝트][18] 상품 등록 - 유효성 검사 (6) | 2021.04.02 |
[Spring][쇼핑몰 프로젝트][18] 상품 등록 - 카테고리 리스트 구현 - 2 (0) | 2021.03.31 |
[Spring][쇼핑몰 프로젝트][18] 상품 등록 - 카테고리 리스트 구현 - 1 (0) | 2021.03.30 |
[Spring][쇼핑몰 프로젝트][18] 상품 등록 - 작가 선택(팝업창) 구현 - 2 (4) | 2021.03.29 |