到处都是我看起来总是一样的解释弹出窗口。
配置视图解析器。

<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 就会被提供。

有帮助吗?

解决方案

ResourceBundleViewResolver使用views.properties中的键/ val来创建视图bean(实际上是在内部应用程序上下文中创建的)。示例中视图bean的名称将是“logout”。它将是一个JstlView类型的bean。 JstlView有一个名为URL的属性,它将被设置为“WEB-INF / jsp / logout.jsp”。您可以以类似的方式在视图类上设置任何属性。

您似乎缺少的是您的控制器/处理程序层。如果希望/myapp/logout.htm提供logout.jsp,则必须将Controller映射到/myapp/logout.htm,并且Controller需要返回视图名称“logout”。然后将为该名称的bean查询ResourceBundleViewResolver,并返回您的JstlView实例。

其他提示

回答您的问题 logout 是从控制器返回的ModelAndView对象获取的视图名称。如果您遇到问题,许多人需要以下额外配置。

您需要在 web.xml 中为 * .htm 添加servlet映射:

    <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" />

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top