Spring
@ModelAttribute와 requestScope(request영역)에서의 forward 데이터활용법 예시
shika
2022. 1. 23. 16:15
=@GetMapping("/test5")
public String test5(@ModelAttribute("bean1") DataBean1 bean1) {
bean1.setData1("문자열6");
bean1.setData2("문자열7");
return "forward:result5";
}
@GetMapping("/result5")
// public String result5(@ModelAttribute("bean1") DataBean1 bean1) { //Model로 받은값은 forward할때는 유지가 안되서 request로 받아야함!!!!!!
public String result5(HttpServletRequest request) {
// DataBean1 bean1 = (DataBean1)request.getAttribute("bean1"); 여기서부터 밑에 3줄은 다됌 주석을 한 까닭은
// System.out.println("bean1.data1 : "+bean1.getData1()); 이렇게 아무것도 없어도 result5.jsp에서 ${bean1.data1}것을 출력할 수 있기 때문
// System.out.println("bean1.data2 : "+bean1.getData2());
return "result5";
}
이렇게 test5에서 @ModelAttriubte로 지정을 해주고
forward로 활용시에는
result5에서 아무것도 안해도 된다.
그냥 request만
public String result5(HttpServletRequest request) {
이렇게 파라미터에 넣어주면 된다.
그럼 알아서 requestScope가 유지되어서
사용이 가능하다.
<body>
<h1>result5</h1>
<h3>bean1.data1 : ${requestScope.bean1.data1 }</h3>
<h3>bean1.data1 : ${requestScope.bean1.data2 }</h3>
</body>
jsp가 이럴때
바로 이렇게 결과가 나온다.
아무것도 안해도 ${bean1.data1}이라고 하면
똑똑한 el이 알아먹고 출력해준다.
나는 맨위 컨트롤러에서 주석을 한 부분이 있어야되는줄알았는데
그런 형변환 어쩌구 없어도
잘 출력이 된다!