티스토리 뷰

 

CartRepositoryImpl.java

package com.springmvc.repository;

import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.springmvc.domain.Cart;

@Repository
public class CartRepositoryImpl implements CartRepository{

	private Map<String, Cart> listOfCarts;

	public CartRepositoryImpl() {
		listOfCarts = new HashMap<String, Cart>();
	}
	
	@Override
	public Cart create(Cart cart) {
		if(listOfCarts.keySet().contains(cart.getCartId())) {
			throw new IllegalArgumentException(String.format("장바구니를 생성할 수 없습니다. 장바구니 id(%)가 존재합니다.", cart.getCartId()));
		}
		return cart;
	}

	@Override
	public Cart read(String cartId) {
		// TODO Auto-generated method stub
		return listOfCarts.get(cartId);
	}

	@Override  //CartServiceImpl에서 호출함
	public void update(String cartId, Cart cart) {
		System.out.println("updateRepository");
		System.out.println("update의 cartId:"+cartId);
		System.out.println("update의 cart:"+cart);
		if(!listOfCarts.keySet().contains(cartId)) {
			//장바구니 ID가 존재하지 않은 경우 예외 처리
			throw new IllegalArgumentException(String.format("장바구니 목록을 갱신할 수 없습니다. 장바구니 id(%)가 존재하지 않습니다", cartId));
		}
		System.out.println("장바구니 담음");
		listOfCarts.put(cartId, cart);
		
	}
	

}

 

도서주문을 클릭하면 아래와 같이 오류가 발생하였다.

 

 

System.out.println을 작성하여 콘솔에 값을 출력해보았을때 

파라미터는 다 제대로 전달되었다는 것을 알 수 있었다.

 

 

코드의 흐름을 보아 listOfCarts에 제대로 값이 저장되지 않을 것을 알 수 있었다.

그러므로 listOfCarts에 데이터를 저장하는 코드를 확인해 보았다.

 

	@Override
	public Cart create(Cart cart) {
		if(listOfCarts.keySet().contains(cart.getCartId())) {
			throw new IllegalArgumentException(String.format("장바구니를 생성할 수 없습니다. 장바구니 id(%)가 존재합니다.", cart.getCartId()));
		}
		return cart;
	}

 

코드를 확인한 결과 위와 같이 카트를 생성하지만 카트에 데이터를 저장하는 코드를 작성하지 않은 것을 확인할 수 있었다.

 

 

 

 

 

 

 

오류를 확인한 후 카트에 데이터를 저장하는 코드인 listOfCarts.put(cart.getCartId(), cart);  를 추가적으로 작성해주었다.

 

	@Override
	public Cart create(Cart cart) {
		if(listOfCarts.keySet().contains(cart.getCartId())) {
			throw new IllegalArgumentException(String.format("장바구니를 생성할 수 없습니다. 장바구니 id(%)가 존재합니다.", cart.getCartId()));
		}
		listOfCarts.put(cart.getCartId(), cart);
		return cart;
	}

 

 

CartRepositoryImpl.java 수정 후

package com.springmvc.repository;

import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.springmvc.domain.Cart;

@Repository
public class CartRepositoryImpl implements CartRepository{

	private Map<String, Cart> listOfCarts;

	public CartRepositoryImpl() {
		listOfCarts = new HashMap<String, Cart>();
	}
	
	@Override
	public Cart create(Cart cart) {
		if(listOfCarts.keySet().contains(cart.getCartId())) {
			throw new IllegalArgumentException(String.format("장바구니를 생성할 수 없습니다. 장바구니 id(%)가 존재합니다.", cart.getCartId()));
		}
		listOfCarts.put(cart.getCartId(), cart);
		return cart;
	}

	@Override
	public Cart read(String cartId) {
		// TODO Auto-generated method stub
		return listOfCarts.get(cartId);
	}

	@Override  //CartServiceImpl에서 호출함
	public void update(String cartId, Cart cart) {
		System.out.println("updateRepository");
		System.out.println("update의 cartId:"+cartId);
		System.out.println("update의 cart:"+cart);
		if(!listOfCarts.keySet().contains(cartId)) {
			//장바구니 ID가 존재하지 않은 경우 예외 처리
			throw new IllegalArgumentException(String.format("장바구니 목록을 갱신할 수 없습니다. 장바구니 id(%)가 존재하지 않습니다", cartId));
		}
		System.out.println("장바구니 담음");
		listOfCarts.put(cartId, cart);
		
	}
	

}

 

 

 

 

코드를 수정한 후 다시 실행한 결과 

아래와 같이 정상적으로 실행되는 것을 볼 수 있었다.

 

 

 

 

 

"null".equals(dt) 하면 null값 인지 확인가능하다.
만약 dto에 입력된 값이 없을 경우,
dto.equals하면 값이 없기 때문에 null이 구별되는게 아니라 equals 함수가 없으므로 exception에러 발생한다.

'코딩 > 오류 노트' 카테고리의 다른 글

[인코딩 오류]  (0) 2024.02.15
[spring] 애너테이션 미작성 오류  (0) 2024.01.31
[REST] 문자열 공백으로 인한 오류  (0) 2024.01.30
[spring] properties 작성  (0) 2024.01.29
spring 한글 깨짐  (0) 2024.01.18
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday