Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 백엔드
- 자바백엔드
- backend
- MySQL
- error
- 플러터
- 자바
- 후기
- 부트캠프
- 도커
- F-Lab
- Flutter
- 성능테스트
- github
- 코딩테스트
- 에프랩
- 멘토링
- Spring
- 로드밸런서
- java
- redis
- 데이터구조
- FLAB
- 레디스
- EC2
- AWS
- 트러블슈팅
- nGrinder
- grafana
- 알고리즘
Archives
- Today
- Total
민스씨의 일취일장
LogT | Java Spring | View 레이어로 데이터를 보내는 두 가지 객체 Model와 RedirectAttribute 본문
Programming Language & Framework/JAVA & Spring
LogT | Java Spring | View 레이어로 데이터를 보내는 두 가지 객체 Model와 RedirectAttribute
읻민스 2023. 2. 16. 22:39반응형
View 레이어로 데이터를 보내는 두 가지 방법에 대한 글이다.
Model.addAttribute & RedirectAttirbute.addFlashAttribute
Controller를 통해 View에 데이터를 전달할 때 사용할 수 있는 객체가 (YdMinS가 현재까지 아는 바로는) 두 가지 있다. 한 가지는 Model 객체를 활용하는 것이고 다른 하나는 RedirectAttribute 객체를 활용하는 것이다.
Model
모델 객체는 View로 데이터를 전달할 때 정말 많이 사용하는 객체이다.
사용법
Conroller에서 Model 객체를 인자로 받고 Model 객체에 속성값을 추가 시켜주면 View에서 참조할 수 있다.
- Controller
public String test(Model m){
String msg = "전달할 메시지를 msg에 담아본다"
// msg에 담은 문자열을 "data"라는 속성에 담는다.
m.addAttribute("data", msg);
// 위에서 전달한 data는 test 뷰페이지에서 data로 참조가능하다.
return "test";
}
- View
<div>
${data}
</div>
RedirectAttribute
Controller에서 일련의 작업을 마친 후 이미 존재하는 다른 페이지로 이동하는 경우가 있다. 이럴 경우 보통 redirect를 사용한다. 이 때 이전 페이지들에서 전달받아온 데이터를 redirect 하는 View 페이지에도 전달해야 할 때가 있다. 물론 이 경우에도 Model 객체를 사용할 수 있지만 URL에 모든 정보가 담겨져 간다. 데이터가 많지 않을 경우엔 문제가 되지 않지만 너무 많은 데이터가 Model로 전달되면 예상치 못한 문제가 발생할 수 있어 다른 방법도 배워두면 좋다. RedirectAttribute 객체를 활용하는 것이 그것인데, 데이터를 Session 객체에 담아서 View에서 사용 후 바로 삭제 된다.
사용법
사용법은 Model과 같지만 객체와 메서드 이름만 다르다.
- Controller
public String test(RedirectAttribute rattr, TestDto testDto){
// testDto로 전달받은 데이터를 redirect 할 때 또 보내준다.
rattr.addFlashAttribute("data", testDto);
return "redirect:/";
}
- View
<div>
${data.savedData}
</div>
* savedData는 예시로 testDto에 담겨있는 데이터를 표현한 것이다.
728x90
반응형
'Programming Language & Framework > JAVA & Spring' 카테고리의 다른 글
TIssue | No converter found for return value of type: class java.util.ArrayList 해결방법 (0) | 2023.02.24 |
---|---|
TIssue | IllegalStateException: Faild to load ApplicationContext (0) | 2023.02.23 |
TIssue | Test 실행 중 TextContextManager 오류 발생 (0) | 2023.02.13 |
LogT | Java Spring의 MyBatis에 대해 알게된 모든 내용과 고민들 (0) | 2023.02.09 |
TIssue | 스프링의 정석 AOP 진행중 Java Runtime 버전 오류 해결방법 (0) | 2023.02.01 |