【发布时间】:2011-11-05 20:54:07
【问题描述】:
我想配置 Spring MVC 以提供与静态文件混合的动态文件,如下所示(URL => 文件):
/iAmDynamic.html => /WEB-INF/views/iAmDynamic.html.ftl
/iAmAlsoDynamic.js => /WEB-INF/views/iAmAlsoDynamic.js.ftl
/iAmStatiHtml => /iAmStatic.html
DispatchServlet 映射到 /,启用了基于注释的 MVC 配置,并且我有一个这样的视图控制器(简化):
@Controller
public class ViewController
{
@RequestMapping("*.html")
public String handleHtml(final HttpServletRequest request)
{
return request.getServletPath();
}
@RequestMapping("*.js")
public String handleJavaScript(final HttpServletRequest request)
{
return request.getServletPath();
}
}
spring 配置如下所示:
<context:component-scan base-package="myPackage" />
<mvc:default-servlet-handler />
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/views/" />
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
</bean>
不幸的是,它不起作用。当这个<mvc:default-servlet-handler /> 处于活动状态时,我只能访问iAmStatic.html 文件。当我禁用 default-servlet-handler 时,只有动态的东西起作用。但我同时想要这两个,这正是这个 default-servlet-handler 应该做的,或者不是?这里的错误在哪里?
【问题讨论】:
标签: java spring spring-mvc