2010-06-27 3 views
2

Итак, у меня есть действие Index в моем классе HomeController.java.Первые шаги с freemarker с пружиной mvc

У меня есть свои шаблоны Freemarker в:

/web-inf/ftl/test.ftl 

Как я могу загрузить шаблон?

У меня есть это в моей APPNAME-servlet.xml:

<bean id="viewResolver" 
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> 
     <property name="suffix"> 
      <value>.ftl</value> 
     </property> 
    </bean> 

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

Что нужно мое действие код выглядеть для индекса действия HomeController?

У меня есть /web-inf/freemarker/index.ftl

+0

Это может помочь: http://stackoverflow.com/questions/4756010/tutorial-for-spring-mvc-with-freemarker –

ответ

3

Я использовал FreeMarker в пружине демо MVC веб-приложение (весна 3.0.5). См http://projectnotes.svn.sourceforge.net/viewvc/projectnotes/trunk/ Веб-контроллер выглядит так, так что ваш index.ftl (который вы бы поставить под SRC/главная/веб-приложение/WEB-INF) будет оказана, если запрос сделан в index.html

@Controller 
public class IndexController { 

    @RequestMapping("/index.html") 
    public String index(Map<String, Object> model) { 

     // populate the model parameter if you need it in index.ftl 
     return "index"; 

    } 
} 

Мой FreeMarker контекст файла выглядит следующим образом

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" 
     default-autowire="byName"> 

    <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/> 

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

     <property name="freemarkerVariables"> 
      <map> 
       <entry key="xml_escape" value-ref="fmXmlEscape"/> 
      </map> 
     </property> 

     <property name="freemarkerSettings"> 
      <props> 
       <prop key="template_update_delay">3</prop> 
      </props> 
     </property> 
    </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"/> 
     <property name="exposeSpringMacroHelpers" value="true"/> 
     <property name="exposeRequestAttributes" value="true"/> 
     <property name="exposeSessionAttributes" value="true"/> 
    </bean> 

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
     <property name="mediaTypes"> 
      <map> 
       <entry key="html" value="text/html"/> 
       <entry key="ftl" value="text/html"/> 
       <entry key="xml" value="application/xml"/> 
       <entry key="json" value="application/json"/> 
      </map> 
     </property> 
     <property name="favorPathExtension" value="true"/> 
     <property name="defaultViews"> 
      <list> 
       <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"> 
        <!-- prevents code injection --> 
        <property name="prefixJson" value="true"/> 
       </bean> 
      </list> 
     </property> 
     <property name="viewResolvers"> 
      <list> 
       <bean 
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> 
        <property name="cache" value="true" /> 
        <property name="order" value="1"/> 
        <property name="prefix" value="/" /> 
        <property name="suffix" value=".ftl" /> 
        <property name="contentType" value="text/html;charset=UTF-8"/> 
        <property name="exposeSpringMacroHelpers" value="true" /> 
        <property name="requestContextAttribute" value="rc" /> 
        <property name="exposeSessionAttributes" value="true" /> 
       </bean> 
      </list> 
     </property> 
    </bean>  
</beans> 
0

из функционального примера доступны на моем blog, контроллер должен выглядеть следующим образом:

@Controller 
public class MyController { 

    @RequestMapping(value = "/index") 
    public String home(Model model) { 

      // Populate the model as necessary 
      model.addAttribute("MsTime", System.currentTimeMillis()); 

      return "Home"; 

    } 

} 
Смежные вопросы