Resolvering Views

Web/Spring

※ Resolvering Views 


▶ Resolvering Views 란?

요청한 결과(model)를 사용자에게 어떠한 방법(View)으로 보여지도록(rendering) 할건지 정하는 방법을 의미한다.


▶ ViewResolver 구현 클래스

- UrlBasedViewResolver

 ViewResolver의 구현체로 특별한 맵핑 정보 없이 view 이름을 URL로 사용

 View 이름과 실제 view 자원과의 이름이 같을 때 사용할 수 있다.


- InternalResourceViewResolver

 웹 어플리케이션의 WAR 파일 내에 포함된 뷰 템플릿을 찾는다.

 뷰 템플릿의 경로는 논리적 뷰 이름에 접두어와 접미어를 붙여 구성

 

- BeanNameViewResolver

 논리적 뷰 이름과 동일한 ID를 갖는 <bean> 으로 등록된 View의 구현체를 찾는다.



 

▶ InternalResourceViewResolver와 UrlBasedViewResolver 구분

InternalResourceViewResolver은 UrlBasedViewResolver를 상속받아 구현되어있다.



document에서는 어떠한 상황에서 InternalResourceViewResolver 사용하면 유용한지에 대해서 기술하고 있다.

1) AlwaysInclude: Controls whether either a forward or include is done.

2) ExposeContextBeansAsAttributes: Allows all beans in context to be available as request attributes, which means they can be referenced from the EL in JSP.

3) ExposedContextBeanNames: If non-null, specifies the list of beans that will be exposed, as opposed to all of them.


▶ ViewResolver 설정 방법



▶ ViewResolver 사용시 주의사항

UrlBasedViewResolver, InternalResourceViewResolver는 ViewResolver 우선순위를 마지막 순위를 갖도록 지정한다.


ex) 

 엑셀파일 다운로드를 위해서 BeanNameViewResolver를 이용, 'excelView'라는 이름으로 view 객체를 생성 놓았다.

 UrlBasedViewResolver, InternalResourceViewResolver를 ViewResolver 우선순위를 마지막 순위를 갖도록 지정하지 않는 경우에

 'excelView' 이름을 가진 실제 view 자원 존재한다면, 엑셀파일 다운로드를 위해서 선언된 'excelView' 이름의 view 객체가 실행되지 않을 수 있다.



▶  출처

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-viewresolver

http://isstory83.tistory.com/117

http://devbox.tistory.com/entry/Spring-ViewResolver-%EC%84%A4%EC%A0%95

http://stackoverflow.com/questions/17453032/what-different-between-internalresourceviewresolver-vs-urlbasedviewresolver

http://forum.spring.io/forum/spring-projects/web/64551-internalresourceviewresolver-and-urlbasedviewresolver