Wie ResourceBundleViewResolver in Spring Framework 2.0 konfigurieren
-
01-07-2019 - |
Frage
überall Ich sehe immer die gleiche Erklärung Pop-ups.
Konfigurieren Sie die Ansicht Resolver.
<bean id="viewMappings"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="views" />
</bean>
Und legte dann eine Datei in dem Classpath namens view.properties mit einigen Schlüssel-Wert-Paaren (Sie die Namen nichts dagegen).
logout.class=org.springframework.web.servlet.view.JstlView
logout.url=WEB-INF/jsp/logout.jsp
Was bedeutet logout.class
und logout.url
bedeuten?
Wie funktioniert ResourceBundleViewResolver
die Schlüssel-Wert-Paare in der Datei verwendet?
Mein Ziel ist es, dass, wenn jemand betritt die URI myserver/myapp/logout.htm
die Datei logout.jsp
serviert wird.
Lösung
ResourceBundleViewResolver verwenden den Schlüssel / vals in views.properties Ansicht Bohnen erstellen (eigentlich in einem internen Anwendungskontext erstellt). Der Name der Ansicht Bohne in Ihrem Beispiel wird „Logout“, und es wird eine Bohne vom Typ JstlView sein. JstlView hat eine genannte URL-Attribut, das auf "WEB-INF / jsp / logout.jsp" gesetzt wird. Sie können auf eine ähnliche Art und Weise jedes Attribut auf die Ansichtsklasse gesetzt.
Was Sie scheinen zu fehlen, ist der Controller / handler Schicht. Wenn Sie /myapp/logout.htm dienen logout.jsp möchten, müssen Sie einen Controller in /myapp/logout.htm Karte und die Steuerung der Ansicht Namen „Logout“ zurückgeben muss. Die ResourceBundleViewResolver wird dann für eine Bean dieses Namens zu Rate gezogen werden, und kehren die Instanz von JstlView.
Andere Tipps
Zur Beantwortung Ihrer Frage logout
der von dem Modeland Objekt durch die Steuerung zurück erhielt Ansicht Name ist. Wenn Ihre Probleme haben Sie viele benötigen folgende zusätzliche Konfiguration.
Sie benötigen ein Servletzuordnung für *.htm
in Ihrem web.xml
hinzuzufügen:
<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>
Und wenn Sie möchten direkt auf die *.jsp
abzubilden, ohne eine individuelle Steuerung zu schaffen, dann müssen Sie die folgende Bohne zu Ihrem Frühlings Kontext hinzuzufügen:
<bean id="urlFilenameController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />