Comment configurer ResourceBundleViewResolver dans Spring Framework 2.0
-
01-07-2019 - |
Question
Partout je regarde toujours la même explication pop-ups.
Configurez le résolveur de vues.
<bean id="viewMappings"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="views" />
</bean>
Et mettez ensuite un fichier dans le chemin d'accès aux classes nommé view.properties avec des paires clé-valeur (ne vous occupez pas des noms).
logout.class=org.springframework.web.servlet.view.JstlView
logout.url=WEB-INF/jsp/logout.jsp
Que signifient logout.class
et logout.url
?
Comment ResourceBundleViewResolver
utilise-t-il les paires clé-valeur du fichier?
Mon but est que lorsque quelqu'un entre l'URI myserver / myapp / logout.htm
, le fichier logout.jsp
soit servi.
La solution
ResourceBundleViewResolver utilise la clé / les valeurs dans views.properties pour créer des beans de vue (créés dans un contexte d'application interne). Le nom du haricot de vue dans votre exemple sera "logout". et ce sera un haricot de type JstlView. JstlView a un attribut appelé URL qui sera défini sur "WEB-INF / jsp / logout.jsp". Vous pouvez définir n'importe quel attribut sur la classe de vue de la même manière.
Ce qui vous semble manquer est votre couche contrôleur / gestionnaire. Si vous souhaitez que /myapp/logout.htm serve logout.jsp, vous devez mapper un contrôleur dans /myapp/logout.htm et ce contrôleur doit renvoyer le nom de la vue "logout". ResourceBundleViewResolver sera alors consulté pour un bean portant ce nom et renverra votre instance de JstlView.
Autres conseils
Pour répondre à votre question, logout
est le nom de la vue obtenu à partir de l'objet ModelAndView renvoyé par le contrôleur. Si vous rencontrez des problèmes, vous avez probablement besoin de la configuration supplémentaire suivante.
Vous devez ajouter un mappage de servlet pour *. htm
dans votre 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>
Et si vous souhaitez mapper directement le *. jsp
sans créer de contrôleur personnalisé, vous devez ajouter le bean suivant à votre contexte Spring:
<bean id="urlFilenameController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />