Dev's/Web

[Dev's] Spring CustomViewResolver 사용하기

rookas89 2021. 12. 6. 17:54
728x90

프로젝트 진행 중, View의 폴더를 분리하여 관리해야하는 경우가 발생하여 이 방법을 찾게 되었음

 

package egovframework.example.cmmn;

import java.util.Locale;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.AbstractUrlBasedView;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.UrlBasedViewResolver;

public class CustomViewResolver extends UrlBasedViewResolver implements Ordered {
	@Override
	protected View loadView(String viewName, Locale locale) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("CustomViewResolver");
		System.out.println(viewName);
		
		AbstractUrlBasedView view = buildView(viewName);
		View viewObj = (View) getApplicationContext().getAutowireCapableBeanFactory().initializeBean(view, viewName);
		if (viewObj instanceof JstlView) {
			JstlView jv = (JstlView) viewObj;
			...
            return null;
		}

		return viewObj;
	}
}

 

먼저 커스텀 Class를 만들어준다

"..."에 원하는 조건식으로 분리시켜놓는다.

여기서 Null 값을 리턴하게 되면 2번째 Resolver 로 적용되는 방식이다.

 

 	 <bean class="egovframework.example.cmmn.CustomViewResolver" 
 	 p:order="1" p:prefix="A" p:suffix=".jsp" 
 	 p:viewClass="org.springframework.web.servlet.view.JstlView"/>
 	 
 	 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
 	 p:order="2" p:prefix="B" p:suffix=".jsp"/>

 

Null값이 안오면 order 1번의 설정값을 사용하게되고

Null값이 나오면 order 2번의 설정값을 사용하게 된다.

 

 

 

[Spring]다중 ViewResolver 설정방법

보통은 한 프로젝트 안에서 한종류의 확장자를 쓰기때문에(예를 들면 .jsp) ViewResolver를 쓰는데 큰문...

blog.naver.com

 

 

[Spring] UrlBasedViewResolver 다중 설정

[Spring] UrlBasedViewResolver 다중 설정 spring com-servlet.xml 에 UrlBasedViewResolver 설정으로 action class 에서 return "list" ->/WEB-INF/jsp/list.jsp 로 변환되어 실제 경로를 찾아간다. 하지만 /WEB-..

jgh6371.tistory.com

 

위 페이지를 참고하였다.

728x90