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를 사용할 수 없는 상황에서 링크를 처리해야 하는 상황에서 사용

+ Recent posts