본문 바로가기

SPRING

[Spring Boot] 상품상세페이지1

상세페이지 만들어두고

제목누르면 상세페이지로 이동 

/detail/1 < 1번 상품의 상세페이지

/detail/2 < 2번 상품의 상세페이지 

 

그럼 API 여러개 만들어야함? ㄴㄴ 

 

URL 파라미터 문법으로 가능

 

@GetMapping("/detail/{작명}")

{} < 이게 URL 파라미터 

참고로 /detail/{작명}/{작명2}/{작명3} 이런식으로 URL 파라미터 여러개 사용 가능 

@GetMapping("/detail/{작명}")
String detail(){
        
        return "detail.html";

    }

이렇게하면 

/detail/1 < 1번 상품의 상세페이지

/detail/2 < 2번 상품의 상세페이지 

보여주게 됨

 

그럼 이제 view쪽으로 각 id에 맞는 데이터를 뿌려주려면? 

 

 

itemRepository.findById(서버에서 받아온 값);

Optional<Item>  reslut = itemRepository.findById(id);

 

Optional<Item> 쓰는 이유

원하는 행의 item있을수도 없을수도 있기때문에 구분해주기위해

 

그래서 if문으로 reslut.isPresent()) 이런식으로 물어보고 있으면 값꺼내주고 이렇게 하는게 정석임 

@GetMapping("/detail/{id}")
String detail(@PathVariable("id") Long id){
    Optional<Item>  reslut = itemRepository.findById(id);

    if (reslut.isPresent()) {
        System.out.println(reslut.get());

  
        return "detail.html";
    }else {
        return  "redirect:/list";
    }

 

Optional<Item> 을 쓸때 특징

result에 있는 값을 꺼내려면 무조건 .get()을 붙여야함