16강 질문입니다.
203
작성한 질문수 7
강사님 안녕하세요.
16강 질문 있습니다.
delete 이후에 alert 메세지를 띄우기 위해서 RedirectAttributes rttr을 파라미터로 하나 선언하고
rttr.addFlashAttribute("msg", "삭제되었습니다.") 이후에 view에서 {{msg}} 받도록 되어 있는데
그냥 Model model 을 파라미터로 두고
model.addAttribute("msg", "삭제되었습니다.")
view {{msg}}
이렇게 받으면 안되나요 ? 어차피 view에서는 전달받은 객체의 변수를 가져만 오는 거고 addFlashAttribute setAttribute가 클래스 내부적으로는 map 으로 구성되어 있겠지만 둘 다 string으로 되어 있으니 다른 점 있을까 싶어서요.
그리고 예전 스프링에서 보면 view에 해당하는 jsp 파일들은 실제로 서블릿으로 동작하고, requestDispatcher -> forward를 통해 넘겨진 request, response 객체들이 동작되어서 jsp 페이지에서 변수처리가 가능한데 이것도 같은 동작방식이라 이해하면 될까요 ?
그렇다면 예를 들어
public String delete(RedirectsAttribute rtts, Model model){
rtts.addFlashAttribute("msg", "삭제되었습니다.");
model.addAttribute("msg", "삭제되었습니다(모델)");
return "test";
}
하였을 때 test 뷰에서 {{msg}} 이렇게 받으면 결과가 어떻게 나오나요 ?
이 때의 동작방식은 어떻게 되는지 설명 부탁드립니다.
감사합니다.
답변 1
0
리다이렉트 시,
모델 객체에 등록된 값은 사라지게 됩니다.
이는 HTTP의 Stateless 특성 때문인데요
이로 인해,
model.addAttribute()로 등록된 값을
리다이렉트된 페이지에서 사용할 수 없습니다.
예시로 든 "test.mustache" 페이지에서는
리다이렉트 방식이 아니므로
모델에 등록된 값 "삭제되었습니다.(모델)"이 보여지게 됩니다.
(리다이렉트가 아닌
forward로 호출된 경우엔
model의 값을 그대로 사용할 수 있습니다.)
PS.
삭제 후, 리다이렉트하는 것이
포워딩하는 것 보다 일반적인 방식(선호방식)입니다.
질문과 함께 예시로 든 코드를
직접 수행해보세요.
23강 댓글 생성 메소드 오류
0
94
2
15.14 강 에러 문제 질문
0
63
1
21강 자율 과제중 update
0
137
2
28강 DB mysql연동 관련 질문
0
300
1
27강 관련 질문
0
210
1
22강 관련질문
0
315
2
21강 create테스트 질문
0
362
1
9강 질문 있습니다
0
294
1
로그창에 내용이 출력이 안됩니다.
0
372
1
index()함수 질문있습니다.
0
371
3
수정완료를 눌렀을때 첫번째 데이터는 전송이 안되고 다시 수정완료 버튼을 눌러야 데이터가 전송 됩니다.
0
486
1
강의와 책 질문
0
443
1
20강 질문있습니다.
0
402
1
20강에서 Article create 부분
0
294
1
16강 질문있습니다.
0
268
1
mustache의 article의 정의가 뭔가요?
0
345
2
17강 Unique index or primary key violation
1
1840
2
8강 에러 질문있습니다.
0
274
1
15강 DB연결
0
344
1
추상클래스를 사용 할 수있을까요?
0
248
1
22강 과제 질문
0
378
1
22강 질문입니다.
0
371
1
19강 create POST 500 에러
0
460
1
19강 JSON create 메서드 질문이여!!
1
544
1





