티스토리 뷰
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