Spring Framework 2.0에서 ResourceBundleViewResolver를 구성하는 방법
-
01-07-2019 - |
문제
어디를 가든 항상 같은 설명 팝업이 나타납니다.
뷰 확인자를 구성합니다.
<bean id="viewMappings"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="views" />
</bean>
그런 다음 일부 키-값 쌍(이름은 신경 쓰지 마세요)과 함께 view.properties라는 클래스 경로에 파일을 넣습니다.
logout.class=org.springframework.web.servlet.view.JstlView
logout.url=WEB-INF/jsp/logout.jsp
무엇을 logout.class
그리고 logout.url
평균?
어떻게 ResourceBundleViewResolver
파일의 키-값 쌍을 사용합니까?
내 목표는 누군가가 URI를 입력할 때 myserver/myapp/logout.htm
파일 logout.jsp
서비스를 받습니다.
해결책
ResourceBundleViewResolver는 views.properties의 키/값을 사용하여 뷰 빈(실제로 내부 애플리케이션 컨텍스트에서 생성됨)을 생성합니다.예제에서 뷰 빈의 이름은 "logout"이고 JstlView 유형의 빈이 됩니다.JstlView에는 "WEB-INF/jsp/logout.jsp"로 설정되는 URL이라는 속성이 있습니다.비슷한 방식으로 뷰 클래스의 속성을 설정할 수 있습니다.
누락된 것으로 보이는 것은 컨트롤러/핸들러 레이어입니다./myapp/logout.htm이 logout.jsp를 제공하도록 하려면 컨트롤러를 /myapp/logout.htm에 매핑해야 하며 해당 컨트롤러는 보기 이름 "logout"을 반환해야 합니다.그런 다음 ResourceBundleViewResolver는 해당 이름의 Bean을 참조하고 JstlView 인스턴스를 반환합니다.
다른 팁
귀하의 질문에 답변하려면 logout
컨트롤러가 반환한 ModelAndView 객체에서 얻은 뷰 이름입니다.문제가 있는 경우 다음과 같은 추가 구성이 필요합니다.
다음에 대한 서블릿 매핑을 추가해야 합니다. *.htm
당신의 web.xml
:
<web-app> <servlet> <servlet-name>htm</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <oad-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>htm</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> </web-app>
그리고 직접 매핑하고 싶다면 *.jsp
사용자 정의 컨트롤러를 생성하지 않고 Spring 컨텍스트에 다음 빈을 추가해야 합니다.
<bean id="urlFilenameController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />