프로그래밍/Spring
[Spring] UriComponentsBuilders 클래스
내일주말
2020. 12. 24. 15:08
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를 사용할 수 없는 상황에서 링크를 처리해야 하는 상황에서 사용