본문 바로가기
Backend/Spring Framework

redirect 로 페이지 이동시 값 전달방법

by 지구 2018. 7. 25.

보상기능을 쓰기 위해 유저가 게시판에 게시물을 쓰면, 지금까지 작성한 게시물 개수를 listBoard 에 뿌려줘야했다.

근데 값을 전달할 때는 forward 를 사용해야만 하는줄 알아서 어떻게 해야하나 고민하고 있었는데...!

spring 에서는 RedirectAttributes 클래스를 이용해 redirect 로도 값을 전달할 수 있다 !!!!!! (최고)



* 사용방법 *

1. RedirectAttributes 선언하고

2. addAttribute() 로 담은 다음에

3. 받는 Controller 에서 @RequestParam 으로 잡고

4. View 에 전달하기 위해 model 에 담으면 끝!


* 실제 사용방법 *

1. Controller - addBoard

1
2
3
4
5
6
7
8
9
10
11
@RequestMapping(value="/board/addBoard", method=RequestMethod.POST)
public String addBoard(@ModelAttribute("board") Board board, Model model,
                        RedirectAttributes redirectAttributes) throws Exception{
    System.out.println("/board/addBoard : POST");
    
    boardService.addBoard(board);
    
    redirectAttributes.addAttribute("boardCnt", boardService.getMyCount("board", board.getUser().getUserId()));
    
    return "redirect:/board/listBoard";
}
cs

2. Controller - listBoard

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@RequestMapping(value="listBoard")
public String getBoardList( @ModelAttribute("search") Search search, Model model, HttpSession session,
                                @RequestParam(value="boardCnt", defaultValue="0"int boardCnt) throws Exception{
    System.out.println("/board/getBoardList : GET / POST");
    
    List<Board> list = boardService.getBoardList(search);
    forint i=0; i<list.size(); i++) {
        list.get(i).setUser( userService.getUser( (list.get(i).getUser().getUserId()) ) );
    }
    
    model.addAttribute("list", list);
    model.addAttribute("search", search);
    //보상기능에 필요
    model.addAttribute("boardCnt", boardCnt);
    
    return "forward:/board/listBoard.jsp";
}
cs

4.



참고사이트 : http://sendthesignal.tistory.com/

반응형

댓글