2008-09-19 49 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中的鍵/ val來創建視圖bean(實際上是在內部應用程序上下文中創建的)。在你的例子中,視圖bean的名稱將是「註銷」,它將是一個類型爲JstlView的bean。 JstlView有一個名爲URL的屬性,它將被設置爲「WEB-INF/jsp/logout.jsp」。您可以用類似的方式在視圖類中設置任何屬性。

你似乎缺少的是你的控制器/處理程序層。如果您希望/myapp/logout.htm爲logout.jsp提供服務,則必須將Controller映射到/myapp/logout.htm,並且Controller需要返回視圖名稱「logout」。然後將查詢ResourceBundleViewResolver以獲得該名稱的bean,並返回JstlView的實例。

0

要回答你的問題logout是從控制器返回的ModelAndView對象獲得的視圖名稱。如果您遇到問題,您需要進行以下額外配置。

您需要在您的web.xml中增加一個servlet映射*.htm

 
    <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而無需創建一個自定義的控制,那麼你需要下面的bean添加到你的春天背景:

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

相關問題