컨트롤러에서 뷰 단으로 파라미터를 전달할 때 여러 가지 방법이 있다.
1) return값에 직접 uri를 작성하여 전달하는 경우
2) RedirectRedirectAttributes의 addAttribute를 사용하는 경우
이렇게 두 가지 방법을 사용해봤는데 첫 번째 방법에서는 직접 uri의 파라미터 부분을 작성하다보니 오타가 날 수 있는 위험이 있다.
그리고 두 번째 방법에서는 오타가 날 확률은 줄어들지만 중복된 코드가 생길 수 있다.
a->b,와 c->b로 동일한 파라미터를 전달할 때 를 예로 들 수 있다.
그래서 이러한 중복된 코드를 줄이기 위해서 UriComponentsBuilder를 사용하면 된다.
사용방법
이렇게 코드를 작성하면 getListLing()메소드는 "?pageNum=dd&amount=5&type=W&keyword=dd"의 형태로 반환한다.
이렇게 반환된 주소를 그대로 컨트롤러의 return문 뒤에 붙이면 된다.
public String getListLink() {
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath("")
.queryParam("pageNum", this.getPageNum())
.queryParam("amount", this.getAmount())
.queryParam("type", this.getType())
.queryParam("keyword", this.getKeyword());
return uriComponentsBuilder.toUriString();
}
이렇게 반환된 주소를 그대로 컨트롤러의 return문 뒤에 붙이면 된다.
그러면 "redirect:/board/list?pageNum=dd&amount=5&type=W&keyword=dd" 와 같은 uri를 호출할 수 있다.
@PostMapping("/modify")
public String modify(BoardVO boardVO, Criteria criteria, RedirectAttributes rttr) {
if(service.modify(boardVO)) {
rttr.addFlashAttribute("result", "success");
}
log.info("criteria uri: "+criteria.getListLink());
return "redirect:/board/list"+criteria.getListLink();
}
출력문의 결과이다.
'Spring > 코드로 배우는 스프링 웹 프로젝트' 카테고리의 다른 글
[Spring MVC] AOP 알아보기 (0) | 2021.03.05 |
---|---|
[게시판 만들기2] Mapper 설정 (0) | 2021.02.24 |
[게시판 만들기1] 초기 설정하기 (0) | 2021.02.24 |
파일 업로드 처리 (servlet-context.xml) (0) | 2021.02.23 |
컨트롤러 파라미터 수집하기 (0) | 2021.02.23 |