2008-09-19 2 views
4

Везде, где я всегда смотрю одно и то же объяснение всплывающих окон.
Конфигурирование разрешения.Как настроить ResourceBundleViewResolver в Spring Framework 2.0

<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.

ответ

5

ResourceBundleViewResolver использует ключ/vals в представлениях.properties для создания компонентов представления (фактически созданных во внутреннем контексте приложения). Имя компонента вида в вашем примере будет «logout», и это будет bean-тип типа JstlView. JstlView имеет атрибут, называемый URL, который будет установлен на «WEB-INF/jsp/logout.jsp». Вы можете установить любой атрибут в классе вида аналогичным образом.

То, что вам кажется недостающим, это ваш уровень контроллера/обработчика. Если вы хотите /myapp/logout.htm для обслуживания logout.jsp, вы должны сопоставить контроллер в /myapp/logout.htm и что контроллеру необходимо вернуть имя вида «logout». Затем ResourceBundleViewResolver будет консультироваться для компонента этого имени и вернуть ваш экземпляр JstlView.

0

Для ответа на ваш вопрос 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 без создания пользовательского контроллера, то вам необходимо добавить следующий компонент в ваш весна:

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