일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- spring form tag
- 톰캣
- maven
- 오라클
- php
- json
- null
- 이클립스
- java
- SSL
- checbox
- 문자열
- html
- 날짜
- switch
- 호환성
- RADIO
- @RequestBody
- DB
- JSTL
- 네이버스마트 에디터
- jquery
- MYSQL
- HTML5
- 웹 플랫폼 설치 관리자
- 한글
- 전자정부 표준프레임워크
- Oracle
- 스크립트
- exception
- Today
- Total
개인적인 정리
RedirectAttributes(redirect 객체 전달) 본문
redirect 시 데이타를 전달할 수 있는 방법
- RedirectAttributes 클래스를 사용하여 전달할 수 있다.
- RedirectAttributes 클래스는 Spring 3.1 버전에 추가되었다고 한다.
- redirect시 RedirectAttributes 클래스를 이용해 효과적으로 alert창을 띄울수도 있다.
https://m.blog.naver.com/allkanet72/220964699929
https://galid1.tistory.com/563
RedirectAttributes 클래스를 통해 string 형태와 map, list, vo 등의 object 형태로 넘겨줄 수 있다.
1. addAttribute 사용
아래와 같이 addAttribute 에 String 문자열을 넣어 전달할 수 있다.
1
2
3
4
5
6
7
8
|
@RequestMapping(value="/aaa/bbb/ddd.do", method =RequestMethod.POST)
public String insertAaaaaaaaaa(ModelMap model, RedirectAttributes rttr) throws Exception{
String message ="등록되었습니다.";
rttr.addAttribute("message", message);
return "redirect:/aaa/bbb/ccc.do";
}
|
cs |
String 문자열을 넣어 전달하면, 아래와 같은 형태가 된다.(String 문자열을 통해 여러개의 변수와 데이타도 전달이 가능하다.)
1
|
/aaa/bbb/ccc.do?message=등록되었습니다.
|
cs |
와 같이 데이타가 URI에 노출된다.
이런 식으로 노출하는 건 딱히 좋아하지 않아 다른 방법을 고민해봤다.
2. addFlashAttribute 사용(String 을 전달)
addFlashAttribute 라는 메소드를 통해 데이타를 전달할수 있는데, 보통 아래 3번과 같이 여러개의 데이타를 map, list등을 통해 전달하는데 사용되는 것 같다. 다만 여기서는 string 문자열을 전달해봤는데 유용하게 사용할 수 있을 것 같다.
addFlashAttribute 의 경우 데이타가 post 형식으로 전달이 된다.
addFlashAttribute 의 경우 데이타가 한번만 사용된다.(Flash가.. 휘발성이란 얘긴가...)
1
2
3
4
5
6
7
8
|
@RequestMapping(value="/aaa/bbb/ddd.do", method =RequestMethod.POST)
public String insertAaaaaaaaaa(ModelMap model, RedirectAttributes rttr) throws Exception{
String message ="등록되었습니다.";
rttr.addFlashAttribute("message", message);
return "redirect:/aaa/bbb/ccc.do";
}
|
cs |
String 문자열을 전달했을 경우에 redirect되는 method의 jsp 파일에서
1
|
${message}
|
cs |
처럼 출력을 해보면 한번만 "등록되었습니다." 가 출력된다.
즉 새로고침을 해도 한번만 나오는데 게시판 같은 경우 글 등록/수정/삭제후에 목록화면으로 이동하는 경우에 유용할 것 같다.
3. addFlashAttribute 사용(String 이 아닌 Object)
addFlashAttribute를 통해 object 를 전달할 수가 있다.
여러개의 데이타(변수)들을 하나의 object(map, list, vo)등에 넣어서 전달을 한다.
redirect 될 때 데이타가 여러개인 경우에 유용하다고 할 수 있겠다.
예제에서는 vo를 예로 들었지만 map, list등이 사용가능하다는 것을 다시 한번 그냥... 강조해본다.
1
2
3
4
5
6
7
8
|
@RequestMapping(value="/aaa/bbb/ddd.do", method =RequestMethod.POST)
public String insertAaaaaaaaaa(ModelMap model, RedirectAttributes rttr) throws Exception{
String message ="등록되었습니다.";
rttr.addFlashAttribute("aaaaVO", aaaaVO)
return "redirect:/aaa/bbb/ccc.do";
}
|
cs |
그럼 데이타를 어떻게 받을까가... 고민이 되었는데
redirect 되는 되는 메소드에서 받을 때는 아래와 같이 사용한다고 한다.
데이타를 받을 때 RequestContextUtils.getInputFlashMap(request) 를 이용해서 받는다고 한다.
1
2
3
4
5
6
7
8
9
10
11
|
public String aaaa(HttpServletRequest request) throws Exception{
Map<String, ?> flashMap =RequestContextUtils.getInputFlashMap(request);
if(flashMap!=null) {
aaaaVO =(AaaaVO)flashMap.get("aaaaVO");
}
return ".......";
}
|
cs |
redirect에 대한.. 고민으로 시작해서 여기까지 작성을 해봤다.
Done
'전자정부표준프레임워크' 카테고리의 다른 글
전자정부표준프레임워크 paging 추가하기 (1) | 2020.09.17 |
---|---|
JSP 커스텀 태그 (JSP Custom Tag) 예제 (0) | 2020.09.14 |
전자정부표준프레임워크 validation Rule 추가 (0) | 2020.09.09 |
전자정부표준프레임워크 validation 검증/체크 (0) | 2020.09.06 |
Redirect와 Forward 의 차이 (0) | 2020.09.03 |
spring JSP Tag Library (0) | 2020.08.31 |
spring-form JSP Tag Library (0) | 2020.08.31 |
전자정부 표준프레임워크 3.9 all-in-one 셋팅해보기 (3) | 2020.03.12 |