티스토리 뷰
오류발생
그래서 db확인해봄
근데 콘솔에는 상품아이디 생성된게 출력됨
문제의 코드
@PostMapping("/add")
public String submitAddNewProduct(@ModelAttribute("addProduct")Product product, HttpServletRequest request)
{
MultipartFile img = product.getProductImage();
String saveName = img.getOriginalFilename();
String save = request.getSession().getServletContext().getRealPath("/resources/images");
File saveFile = new File(save, saveName);
if(img !=null&& ! img.isEmpty())
{
try {
img.transferTo(saveFile);
product.setFileName(saveName); // 17단원 추가
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException("상품 이미지 업로드가 실패하였습니다.");
}
}
System.out.println("PostMapping 도착");
productService.setNewProduct(product);
String pdId = generateProductId(10);
System.out.println(pdId);
product.setProductId(pdId);
return "redirect:/products";
}
private String generateProductId(int length) {
if (length <= 0) {
throw new IllegalArgumentException("길이는 1이상이어야 합니다.");
}
Random random = new Random();
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < length; i++) {
int randomNumber = random.nextInt(10);
stringBuilder.append(randomNumber);
}
return "P_" + stringBuilder.toString();
}
위의 코드에서 PostMapping을 봐야하는데
그 코드 중에서도 productId를 설정하고 setNewProduct하는 부분을 보아야한다.
setNewProduct 메서드를 호출하여 product 객체를 입력해주는데
나는 productId보다 위에 작성하여 Id가 생성되기 전에 setNewProduct 메서드를 호출하여 입력해주었다.
그렇기 때문에 Id 값이 제대로 입력되지 않는 것이다.
문제점을 인식하고 코드의 순서를 변경해주었다.
@PostMapping("/add")
public String submitAddNewProduct(@ModelAttribute("addProduct")Product product, HttpServletRequest request)
{
MultipartFile img = product.getProductImage();
String saveName = img.getOriginalFilename();
String save = request.getSession().getServletContext().getRealPath("/resources/images");
File saveFile = new File(save, saveName);
if(img !=null&& ! img.isEmpty())
{
try {
img.transferTo(saveFile);
product.setFileName(saveName); // 17단원 추가
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException("상품 이미지 업로드가 실패하였습니다.");
}
}
System.out.println("PostMapping 도착");
String pdId = generateProductId(10);
System.out.println(pdId);
product.setProductId(pdId);
productService.setNewProduct(product);
return "redirect:/products";
}
private String generateProductId(int length) {
if (length <= 0) {
throw new IllegalArgumentException("길이는 1이상이어야 합니다.");
}
Random random = new Random();
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < length; i++) {
int randomNumber = random.nextInt(10);
stringBuilder.append(randomNumber);
}
return "P_" + stringBuilder.toString();
}
'코딩 > 오류 노트' 카테고리의 다른 글
마지막 두 원소 오류 주의할 점 (0) | 2024.05.22 |
---|---|
[23주 5일차] split 사용! 근데 문제 생김! 공백이 첫번째 값으로 취급되어 버리네...? (0) | 2024.03.15 |
[AJAX] 라디오버튼 값에 따른 출력값 변경 (0) | 2024.03.05 |
[22주 1일차] 카카오맵 API 로딩오류 (0) | 2024.03.04 |
[xml] list로 저장하여 요소 출력시 마지막 값만 저장되어 출력 (0) | 2024.03.01 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday