2011-12-09 2 views
0

SpringMVC가 뷰 이름을 확인할 때 컨트롤러 이름 (클래스 이름 또는 bean 이름)을 dir 이름으로 지정하려고합니다. UrlBasedViewResolver에 접두사 param을 정의한 경우 /WEB-INF/admin/${controller}/과 같지만, 물론 작동하지 않습니다. UrlBasedViewResolver 그냥 간단한 (같은 view.setUrl(getPrefix() + viewName + getSuffix());를) 이름을 보려면보기 접두사를 부착하기 때문에ViewReolver에서 컨트롤러 클래스 이름에 자리 표시자를 사용하는 방법

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="prefix" value="/WEB-INF/admin/${controller}/"/> 
    <property name="suffix" value=".jsp"/> 
    <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/> 
</bean> 

물론, 그것은 작동하지 않습니다.

이 문제를 가장 쉽게 해결할 수있는 방법은 무엇입니까?

UrlBasedViewResolver 하위 클래스에서 buildView 메서드를 사용하여 해결할 때 컨트롤러 이름을 얻는 가장 쉬운 방법은 무엇입니까?

+1

"컨트롤러 이름"이란 무엇입니까? 콩 이름? 수업 이름? 경로 이름? – skaffman

+0

@ skaffman, 꼭 필요한 것은 아닙니다. 그러나 클래스 이름이 더 좋을 것입니다. –

+1

"필요하지 않다"는 것은 무엇을 의미합니까? 구체적으로 질문을 수정하십시오. – skaffman

답변

1

HandlerInterceptor을 만들고 postHandle() 메서드에서보기 이름 속성을 ModelAndView으로 수정할 수 있습니다 (컨트롤러 실행 후 뷰 렌더링 전에 호출 됨). 또한이 메서드는 컨트롤러의 인스턴스를 handle으로받습니다.

관련 문제