0

我希望任何无法解析为特定控制器映射的请求都可以转到名称从请求路径派生的视图。

例如localhost/success,最终应该渲染一个位于/WEB-INF/view/freemarker/success.ftl. 我从 Spring 文档中收集到,默认情况下应该启用此行为,因为它似乎不适用于我的设置。

<mvc:annotation-driven />
<mvc:interceptors>
    <!-- On pre-handle, resolve the device that originated the web request -->
    <bean
        class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />
</mvc:interceptors>

<!-- Spring Mobile -->
<bean
    class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">
    <constructor-arg>
        <!-- Freemarker -->
        <bean id="viewResolver"
            class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
            <property name="cache" value="false" />
            <property name="prefix" value="" />
            <property name="suffix" value=".ftl" />
        </bean>
    </constructor-arg>
    <property name="mobilePrefix" value="mobile/" />
    <property name="tabletPrefix" value="tablet/" />
</bean>

<bean id="freemarkerConfig"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/view/freemarker/" />
</bean>

4

1 回答 1

2

结果发现没有HandlerMapping为这些请求找到实现,因此DispatcherServlet从未调用DefaultRequestToViewNameTranslator.

添加以下内容提供了适当的HandlerMapping,从而填补了缺失的链接。现在唯一的缺点是,对于任何无法满足的请求,它都会在 SEVERE 处引发异常日志记录,而不是DispatcherServlet更礼貌的 WARNING。

<mvc:view-controller path="/*" />
于 2013-04-05T10:46:40.153 回答