Spring

Spring 일지 #10 (20210914) 화면 구현(이전글, 다음글)

uni5948 2021. 9. 15. 16:56

10. 이전글, 다음글 구현

-참고 사이트(4.4.5, 6.3.2 참고)

https://docs.spring.io/spring-data/jpa/docs/2.3.7.RELEASE/reference/html/#reference

4.4.5
6.3.2

-이전글, 다음글 구현

 *이전글, 다음글 변수 등록(BoardRepository.java)

 **이전글은 Desc (내림차순), 다음글은 Asc(오름차순) 을 이용한다.

 

  //이전글 (현재글 20 이면 작은 것 중에서 가장 큰 것 1개)

    Board findTop1ByNoLessThanOrderByNoDesc(long no);

   //다음글 (현재글 20 이면 큰 것 중에서 가장 작은 것 1개)

    Board findTop1ByNoGreaterThanOrderByNoAsc(long no);

 

 *이전글, 다음글 등록하기(BoardController.java)

 

 // 127.0.0.1:8080/ROOT/board/select_one?no=13

    @RequestMapping(value = "/select_one"method = RequestMethod.GET)

    public String selectOne(

        @RequestParam(name =  "no"defaultValue = "0"long no,

        Model model) {

            System.out.println(no);

            if(no == 0) { //파라미터가 전달되지 못했음.

                return "redirect:select";

            }

 

            Optional<Boardobj = bRepository.findById(no);

            if(obj.isPresent()){

                Board board = obj.get();

                //이전글

                Board board2 = bRepository.findTop1ByNoLessThanOrderByNoDesc(no);

                //다음글

                Board board3 = bRepository.findTop1ByNoGreaterThanOrderByNoAsc(no);

                if(board2 == null){  -> 이전글이 없다면 prev 의 값을 0으로 출력

                    model.addAttribute("prev"0);

                }

                else { 

                    model.addAttribute("prev"board2.getNo());

                }

                

                if(board3 == null){  -> 다음글이 없다면 next의 값을 0으로 출력

                    model.addAttribute("next"0);

                }

                else{

                    model.addAttribute("next"board3.getNo());

                }

                model.addAttribute("board"board);

            }

        return "board_select_one";

    }

 

 *구현하기(board_select_one.jsp)

 ** 기존의 이전글, 다음글 버튼을 a 태그로 감싼다.

 **controller에서 이전, 다음글이 없다면 prev, next 를 0으로 출력하도록 했기 때문에  no=0 이 된다.

 

<a th:if="${prev != 0}" th:href="@{/board/select_one(no=${prev})}"><input type="button" value="이전글" /></a>

<a th:if="${next != 0}" th:href="@{/board/select_one(no=${next})}"><input type="button" value="다음글" /></a>

 

 *화면 확인

 *마지막 글, 처음 글을 확인하면 다음글, 이전글 버튼이 없어졌음를 확인할 수 있다.

이전글, 다음글 구현