model.getAttribute()와 request.getAttribute()는
반환값이 Object이다.
그렇기 때문에 꼭 원하는 타입(보통 String, 내가 만든 객체 등)으로 형변환을 해서
사용해야한다. 예를 들면 이런식으로
String data1 = (String)request.getAttribute("data1");
String data2 = (String)model.getAttribute("data2");
이렇게 말이다.
그리고 중요한 주의점2
model로 정보를 옮겨도
받고 사용할때는 request를 이용해서 사용한다
(받을 때도 model로 받으면 null로 뜬다)
@GetMapping("/test2")
public String test2(Model model) {
model.addAttribute("data2","문자열2"); //저장은 request영역에 저장됨, 즉 받는 GetMapping의 파라미터는 Model이 아닌 Request로 해야함
return "forward:result2";
}
@GetMapping("/result2")
public String result2(HttpServletRequest request) { //여기서 파라미터에 Model을 주입받으면 밑에줄의 syso에 data2:null이라고뜸
//String data2 = (String)model.getAttribute("data2"); //model은 forward해도 유지가 되지않음!!! 유지가 되는것은 Request
String data2 = (String)request.getAttribute("data2");
System.out.println("data2 : "+data2);
return "result2";
}
여기서 test2메서드에서 model로 정보를 보냈지만
result2에서는 받을때 model로 받으면 null로 나오게된다.
RequestScope여서 그런것같다..
받을 때는 HttpServletRequest의 request로 받아야 정상적으로 사용이 가능하다!!
이점을 주의하도록 하자
model로 한번 직접 받아보자
(물론 화면에는 잘나온다. getAttribute와 상관이 없으니 화면은)
하지만 콘솔에 sysout를 찍을때는
이렇게 null이 뜬다.
model로 받으면 null이 뜨지만
request로 받으면 어떨까?
request로 받으면
이렇게 잘뜬다
한마디로 자바코드에서 model로 넘긴 정보를 건드릴때는
model이 아닌 request를 이용해서 사용하도록 하자.
@Bean @RequestScope @Component @Configuration ,jsp출력까지 예시 (0) | 2022.01.23 |
---|---|
@ModelAttribute와 requestScope(request영역)에서의 forward 데이터활용법 예시 (0) | 2022.01.23 |
spring tag (form태그, form:select, checkbox, radiobutton, radiobuttons) 예시 사용법 (0) | 2022.01.23 |
spring form tag <form:form> (0) | 2022.01.23 |
Spring - form 커스텀태그 <form:form> 맨위 선언 필수 (0) | 2022.01.22 |
댓글 영역