일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 게시판
- object
- 출처 : https://webdir.tistory.com/506
- toString
- https://velog.io/@velopert/create-typescript-react-component
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- Today
- Total
Back Ground
ModelAndView 본문
ModelAndView는 Controller의 처리 결과를 보여줄 view와 view에서 사용할 값을 전달하는 클래스이다.
-생성자
ModelAndView() : 그냥 생성
ModelAndView(Object view) : 렌더링 할 View
ModelAndView(Object view, Map model) : 렌더링 할 View와 View에 전달할 Map
ModelAndView(Object view, String modelName, Object modelObject) 렌더링 할 View와 View에 전달할 객체의 이름과 값
ModelAndView(String viewName) : ViewResolver에 전달할 View 이름
ModelAndView(String viewName, Map model) : ViewResolver에 전달할 View 이름과 View에 전달할 Map
ModelAndView(String viewName, String modelName, Object modelObject) : ViewResolver에 전달할 View 이름과 View에 전달할 객체의 이름과 값
-사용되는 메소드
addAllObjects(Map modelMap) : modelMap에 저장된 키-값 쌍 전체를 View에 전달
addObject(Object attributeValue) : 전달할 이름을 알아서 정해서 View에 attributeValue를 전달
addObject(String attributeName, Object attributeValue) : View에 attributeName으로 attributeValue을 전달
setViewName(String viewName) : ViewResolver에 전달할 viewName 설정
여기서 주목해 보아야 할 것은 2번째 메소드인 전달할 이름을 알아서 정해서 View에 전달하는 경우이다.
Spring MVC에서는 아래와 같은 규칙에 따라 디폴트로 이름을 정한다.
클래스 이름이 ModelClass인 경우 : modelClass
ModelClass[] 배열인 경우 : modelClassList
Collection 클래스가 ModelClass를 갖는 경우 : modelClassList
이것이 그 유명한 Convention Over Configuration이다...
잘 사용하면 편리하게 사용할 수 있는데 사실 모르고 보면 이게 뭔소리야 하고 삽질하게 된다... -_-;;
그리고 혹시나 그냥 디폴트 생성자로 ModelAndView를 생성하고 setViewName() 메소드로 View 이름을 지정하지 않는 경우 곧바로 오류가 발생하지는 않는다..
왜냐하면 이것도 DefaultRequestToViewNameTranslater가 View 이름을 자동으로 지정해주기 때문이다.
이 클래스는 UrlFienameViewController와 비슷하게 /test/main.jsp 라면 test/main 으로 /main.jsp 라면 main으로 View 이름을 가져온다.
지정 안해줬는데 어쩌다 보니 View 이름이 얻어 걸려서 오류가 안나는 경우가 발생할 여지가 충분하다... (고맙기도 하지...)
마지막으로 ModelAndView로 포워드 뿐만 아니라 리다이렉트도 사용할 수 있는데...
이런 경우에는 setViewName() 메소드 파라미터에 "redirect:"를 prefix로 붙여주면 된다.
뭐 대충 /main.jsp로 보내고 싶다면 아래와 같이 사용하면 된다~
return ModelAndView("redirect:/main.jsp");
'JAVA' 카테고리의 다른 글
JVM/JRE/JDK 이란 (0) | 2018.01.29 |
---|---|
자바 Byte /오라클 Byte 크기 다를때 UTF-8은 3Byte (0) | 2017.07.27 |
JVM 메모리 구조 (1) | 2017.03.09 |
JAVA - 배열[] (0) | 2017.02.15 |
GSON - java 객체(object)를 JSON 표현식으로 변환하는 API (0) | 2016.12.20 |