Как настроить ResourceBundleViewResolver в Spring Framework 2.0 - PullRequest
4 голосов
/ 19 сентября 2008

Куда бы я ни посмотрел, везде всплывают одни и те же объяснения.
Сконфигурируйте распознаватель представлений.

<bean id="viewMappings"
      class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="views" />
</bean>

И затем поместите файл в classpath с именем 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 обслуживался.

Ответы [ 2 ]

5 голосов
/ 20 сентября 2008

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

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

0 голосов
/ 20 сентября 2008

Чтобы ответить на ваш вопрос 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-компонент в контекст Spring:

    <bean id="urlFilenameController"
        class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...