250x250
Notice
Recent Posts
Recent Comments
Link
Chanho_Park
[JAVA] Controller에서 Redirect 객체 넘기기 본문
728x90
Controller에서 많은 변수들을 받아와 그것들을 다시
다음 Controller에 넘기고 싶을 때가 있다.
지금까지
return redirect+"?whatColumn="+searchvo.getWhatColumn()+"&keyword="+searchvo.getKeyword()+"&pageNumber="+searchvo.getPageNumber();
이런 식으로 return 할 때 모든 변수를 붙히곤 했다.
코드도 깔끔하지 못할 뿐더러 보기에도 너무 힘들다.
[해결방법]
redirect 시 데이타를 전달할 수 있는 방법
- RedirectAttributes 클래스를 사용하여 전달할 수 있다.
- RedirectAttributes 클래스는 Spring 3.1 버전에 추가되었다고 한다.
- redirect시 RedirectAttributes 클래스를 이용해 효과적으로 alert창을 띄울수도 있다.
1. 먼저 이 변수들을 담을 수 있는 객체를 만들어 준다.
public class SearchVO {
private String whatColumn;
private String keyword;
private String pageNumber;
private String item_no;
2. 이 객체를 받아서 다른 곳으로 넘길 controllere에서는 이렇게 작성한다.
다른 건 마음대로 써도 되지만
필자는 SearchVO 라는 객체를 받아왔고 어떤 작업을 거친 후에
redirect해서 다른 controller에 보낼 예정이다.
addFlashAttribute를 통해 object 를 전달할 수가 있다.
여러개의 데이타(변수)들을 하나의 object(map, list, vo)등에 넣어서 전달을 한다.
(코드가 엄청 깔끔해진다)
@GetMapping("/delete")
public String delete(SearchVO searchvo,RedirectAttributes rttr) {
service.deleteOne(searchvo.getItem_no());
rttr.addFlashAttribute("searchvo",searchvo); // rttr에 담는다.
return redirect;
}
이렇게 해주고 이제 redirect 되는 곳의 controller 에서는
SearchVO를 받아서 사용 할 것이다.
@GetMapping(value="/list", produces = "application/text;charset=utf8")
public void clientlist(SearchVO searchvo,HttpServletRequest request) {
// redirect로 객체받기
Map<String, ?> flashMap = RequestContextUtils.getInputFlashMap(request);
if(flashMap!=null)
searchvo =(SearchVO)flashMap.get("searchvo");
// 이곳에서 작업
int totalCount = service.getTotalCount(searchvo);
}
728x90
'Spring' 카테고리의 다른 글
[Spring] github push/pull 시 한글깨짐 현상 (0) | 2022.12.15 |
---|---|
[JSTL] jsp 상에서 소수점 버리기 (0) | 2022.11.21 |
[eclipse] lombok 설치 후 Eclipse 실행 안될 때 (1) | 2022.11.20 |
[WebSoket] 스프링 웹소켓 사용하여 실시간 채팅 구현 (0) | 2022.11.18 |
[Spring] Maven Update 시 Updating Maven Project 에러 (0) | 2022.11.16 |