org.springframework.web.util.UriComponentsBuilders
는 여러 개의 파라미터들을 연결해서 URL의 형태로 만들어 주는 기능을 가지고 있음
URL을 만들어주면 리다이렉트를 하거나, <form> 태그를 이용하는 상황을 많이 줄여줄 수 있음
public String getListLink() {
UriComponentsBuilders builder = UriComponentsBuilder.fromPath("");
.queryParam("pageNum", this.pageNum) //페이지번호
.queryParam("amount", this.getAmount()) //페이지 양
.queryParam("type", this.getType()) //검색 조건
.queryParam("keyword", this.getKeyword()); //검색 단어
return builder.toUriString();
}
UriComponentsBuilder 사용전
@PostMapping("/modify")
public String modify(BoardVO board, @ModelAttribute("cri") Criteria cri, RedirectAttributes rttr) {
log.info("modify : " +board);
if(service.modify(board)) {
rttr.addFlashAttribute("result", "success");
}
// 리다이렉트 시에 원래의 페이지로 이동하기 위해서 값을 가지고 이동을 위함
rttr.addAttribute("pageNum", cri.getPageNum());
rttr.addAttribute("amount", cri.getAmount());
rttr.addAttribute("type", cri.getType());
rttr.addAttribute("keyword", cri.getKeyword());
return "redirect:/board/list";
}
UriComponentsBuilder 적용 후
@PostMapping("/modify")
public String modify(BoardVO board, @ModelAttribute("cri") Criteria cri, RedirectAttributes rttr) {
log.info("modify : " +board);
if(service.modify(board)) {
rttr.addFlashAttribute("result", "success");
}
/*
rttr.addAttribute("pageNum", cri.getPageNum());
rttr.addAttribute("amount", cri.getAmount());
rttr.addAttribute("type", cri.getType());
rttr.addAttribute("keyword", cri.getKeyword());
*/
//적용 후
return "redirect:/board/list" + cri.getListLink();
}
- 페이지 이동시에 데이터값을 가지고 넘어갈 때 간편해짐
- 가장 편리한 점은 한글 처리에 신경 쓰지 않아도 된다는 점
- 주로 JavaScript를 사용할 수 없는 상황에서 링크를 처리해야 하는 상황에서 사용
'프로그래밍 > Spring' 카테고리의 다른 글
[jQuery] id, name, class로 접근 방법 (0) | 2020.12.29 |
---|---|
REST 방식으로 전환 및 이유 (0) | 2020.12.24 |
[MyBatis] 동적 태그들(trim, foreach) (0) | 2020.12.23 |
[MyBatis] 동적 태그들(if, choose) (0) | 2020.12.23 |
[Spring] 페이징 처리 (0) | 2020.12.22 |