美文网首页
Freemarker基本使用

Freemarker基本使用

作者: 运动书生 | 来源:发表于2019-03-05 16:51 被阅读0次

    依赖

                <freemarker.version>2.3.28</freemarker.version>
                <dependency>
                    <groupId>org.freemarker</groupId>
                    <artifactId>freemarker</artifactId>
                    <version>${freemarker.version}</version>
                </dependency>
    

    简单使用

            String dir="/XXX/src/main/resources";
            Configuration conf = new Configuration();
            //加载模板文件(模板的路径)
            conf.setDirectoryForTemplateLoading(new File(dir));
            // 加载模板
            Template template = conf.getTemplate("/demo.ftl");
            // 定义数据
            Map root = new HashMap();
            root.put("world", "Hello World");
            // 定义输出
            Writer out = new FileWriter(dir + "/demo.html");
            template.process(root, out);
            System.out.println("转换成功");
            out.flush();
            out.close();
    

    bean配置

    <bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
            <property name="templateLoaderPath" value="/WEB-INF/views/message"/>
            <property name="freemarkerSettings">
                <props>
                    <prop key="template_update_delay">0</prop>
                    <prop key="default_encoding">UTF-8</prop>
                    <prop key="locale">zh_CN</prop>
                </props>
            </property>
        </bean>
    
    
    @Component
    public class  FreeMarkerTemplateUtil {
        private static final Logger log = LoggerFactory.getLogger(FreeMarkerTemplateUtil.class);
    
        @Resource
        private Configuration freemarkerConfiguration;
    
        public String processTemplateIntoString(String fileName, Map<String,Object> data){
            try {
                Template t = freemarkerConfiguration.getTemplate(fileName);
                String body = FreeMarkerTemplateUtils.processTemplateIntoString(t, data);
                return body;
            } catch (IOException e) {
                log.error(e.getMessage(),e);
                throw new RuntimeException(e.toString(),e);
            } catch (TemplateException e) {
                log.error(e.getMessage(), e);
                throw new RuntimeException(e.toString(),e);
            }
        }
    
    }
    

    字符串加载

    如果我想把模板存放到数据库中,可以实现吗?答案是肯定的。在这里可以使用StringTemplateLoader来加载模板内容。主要的代码实现如下所示:
    Configuration cfg = new Configuration(); 
    StringTemplateLoader stringLoader = new StringTemplateLoader();  
    String templateContent="hello ${name}!";  
    stringLoader.putTemplate("myTemplate",templateContent);  
    cfg.setTemplateLoader(stringLoader);  
    Template template = cfg.getTemplate("myTemplate","utf-8");
    
    
    

    相关文章

      网友评论

          本文标题:Freemarker基本使用

          本文链接:https://www.haomeiwen.com/subject/hptnuqtx.html