2008-09-19 4 views
4

어디서나 나는 항상 같은 설명을하는 것처럼 보입니다.
보기 확인자를 구성하십시오. 다음 Spring Framework 2.0에서 ResourceBundleViewResolver를 구성하는 방법

<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.classlogout.url 무엇을 의미합니까?
ResourceBundleViewResolver은 파일에서 키 - 값 쌍을 어떻게 사용합니까?
누군가가 URI myserver/myapp/logout.htm을 입력하면 logout.jsp 파일이 제공됩니다.

답변

5

ResourceBundleViewResolver는 views.properties의 key/vals를 사용하여 (실제로는 내부 애플리케이션 컨텍스트에서 생성 된) 뷰빈을 생성합니다. 당신의 예제에서 뷰 빈의 이름은 "logout"이 될 것이고 이것은 JstlView 타입의 빈일 것이다. JstlView에는 "WEB-INF/jsp/logout.jsp"로 설정 될 URL이라는 속성이 있습니다. 비슷한 방식으로 뷰 클래스의 속성을 설정할 수 있습니다.

누락 된 것으로 보이는 부분은 컨트롤러/처리기 레이어입니다. /myapp/logout.htm에서 logout.jsp를 제공하려면 컨트롤러를 /myapp/logout.htm에 매핑해야하며 해당 컨트롤러는보기 이름 "logout"을 반환해야합니다. 그런 다음 해당 이름의 bean에 대해 ResourceBundleViewResolver를 참조하고 JstlView의 인스턴스를 리턴합니다.

0

질문에 대한 답변을 보려면 logout은 컨트롤러에서 반환 한 ModelAndView 개체에서 가져온보기 이름입니다. 문제가있는 경우 다음과 같은 추가 구성이 필요합니다.

 
    <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에 직접 매핑하려는 경우 당신은에 다음과 같은 빈을 추가해야합니다

당신은 당신의 web.xml*.htm위한 서블릿 매핑을 추가 할 필요가 봄 컨텍스트 :

 
    <bean id="urlFilenameController" 
     class="org.springframework.web.servlet.mvc.UrlFilenameViewController" /> 

관련 문제