带有spring mvc的Freemarker,我的动作会是什么样子?

时间:2010-06-28 20:21:01

标签: java spring spring-mvc freemarker

appname-servlet.xml我有:

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

<!-- 

  View resolvers can also be configured with ResourceBundles or XML files. If you need
  different view resolving based on Locale, you have to use the resource bundle resolver.

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

  <!-- if you want to use the Spring FreeMarker macros, set this property to true -->
  <property name="exposeSpringMacroHelpers" value="true"/>

</bean>

所以我的HomeController.java索引视图位于:/web-inf/freemarker/index.ftl

我希望有人可以创建一个简单的简单索引操作,创建ModelAndView并使用freemarker

我不确定事情会怎样连在一起,谢谢!

2 个答案:

答案 0 :(得分:2)

控制器应该不了解Freemarker,它们应该像任何其他控制器一样,按照正常情况构建ModelAndViewModelMapFreeMarkerViewResolver获取ModelAndView中保存的视图名称,并在内部将其解析为Freemarker Template对象,将模型渲染到该对象中。所有freemarker配置都在FreeMarkerViewResolver

的内部

如果您的上下文没有正确连接,那么FreeMarkerViewResolver会抛出异常,但您当然不需要在控制器中添加任何freemarker配置。

答案 1 :(得分:0)

我认为你不需要freemarkerConfig。只需更改视图解析器:

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="cache" value="true"/>
    <property name="prefix" value="/WEB-INF/freemarker/"/>
    <property name="suffix" value=".ftl"/>
    <property name="exposeSpringMacroHelpers" value="true"/>
</bean>

现在,如果你打开hppt:// localhost:8080 / app / index,你将会得到渲染/WEB-INF/freemarker/index.ftl