今天用Ajax异步添加评论,加载Freemarker模板引擎,生成模板模块

1.新建Freemarker模板

  1. <li id="${comment.oId}">
  2. <div>
  3. <div class="avatar tooltipped tooltipped-n" aria-label="${comment.commentName}"
  4. style="background-image: url(${comment.commentThumbnailURL})"></div>
  5. <main>
  6. <div class="fn-clear">
  7. <#if "http://" == comment.commentURL>
  8. ${comment.commentName}
  9. <#else>
  10. <a class="user-name" href="${comment.commentURL}" target="_blank">${comment.commentName}</a>
  11. </#if>
  12. <#if comment.isReply>
  13. @<a class="user-name" href="/${article.articlePermalink}#${comment.commentOriginalCommentId}"
  14. onmouseover="page.showComment(this, '${comment.commentOriginalCommentId}', 23);"
  15. onmouseout="page.hideComment('${comment.commentOriginalCommentId}')"
  16. >${comment.commentOriginalCommentName}</a>
  17. </#if>
  18. <time class="ft-gray">${comment.commentDate?string("yyyy-MM-dd HH:mm")}</time>
  19.  
  20. <#if article.articleCommentable==1>
  21. <a class="reply-btn" href="javascript:replyTo('${comment.oId}')">${replyLabel}</a>
  22. </#if>
  23. </div>
  24. <div class="content-reset">
  25. ${comment.commentContent}
  26. </div>
  27. </main>
  28. </div>
  29. </li>

2.新建FreemarkerUtils工具类

  1. package com.fdzang.mblog.utils;
  2.  
  3. import freemarker.template.Configuration;
  4. import freemarker.template.Template;
  5. import freemarker.template.TemplateException;
  6. import freemarker.template.TemplateExceptionHandler;
  7.  
  8. import java.io.File;
  9. import java.io.IOException;
  10. import java.io.StringWriter;
  11. import java.util.Map;
  12.  
  13. public class FreemarkerUtils {
  14. public static String getTemplate(String template, Map<String,Object> map) throws IOException, TemplateException {
  15. Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
  16. String templatePath = FreemarkerUtils.class.getResource("/").getPath()+"/templates";
  17. cfg.setDirectoryForTemplateLoading(new File(templatePath));
  18. cfg.setDefaultEncoding("UTF-8");
  19. cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
  20. cfg.setLogTemplateExceptions(false);
  21. cfg.setWrapUncheckedExceptions(true);
  22. Template temp = cfg.getTemplate(template);
  23. StringWriter stringWriter = new StringWriter();
  24. temp.process(map, stringWriter);
  25. return stringWriter.toString();
  26. }
  27. }

template为模板的名称,Map为需要插入的参数

关于加载模板位置的方法,借鉴于

https://blog.csdn.net/gtlishujie/article/details/52300381

我就不多加累述了,关键在于获取文件路径,文件路径不对的话,可以试着输出然后调试,个人推荐文件加载这个方法

3.Controller层的方法

  1. Map<String,Object> map=new HashMap<>();
  2. map.put("article",article);
  3. map.put("comment",comment);
  4. map.put("replyLabel","回复");
  5. String cmtTpl= FreemarkerUtils.getTemplate("common-comment.ftl",map);
  6. result.setCmtTpl(cmtTpl);

定义好Map参数,指定加载的模板引擎,就可以得到解析后的HTML了

SpringBoot获取Freemarker模板引擎,生成HTML代码的更多相关文章

  1. springboot整合freemarker模板引擎后在页面获取basePath绝对路径

    在项目中引用静态资源文件或者进行ajax请求时我们有时候会使用 ${basePath} ,其实这就是一种获取绝对路径的方式: 那么在springboot项目中要怎么配置才能使用 basePaht呢? ...

  2. 使用freemarker模板引擎生成word文档的开发步骤

    1.准备模板文档,如果word文档中有表格,只保留表头和第一行数据:2.定义变量,将word文档中的变量用${var_name}替换:3.生成xml文件,将替换变量符后的word文档另存为xml文件: ...

  3. Spring Boot 揭秘与实战(七) 实用技术篇 - FreeMarker 模板引擎

    文章目录 1. FreeMaker 代替 JSP 作为页面渲染 2. 生成静态文件 3. 扩展阅读 4. 源代码 Spring Boot 提供了很多模板引擎的支持,例如 FreeMarker.Thym ...

  4. SpringBoot日记——Thymeleaf模板引擎篇

    开发通常我们都会使用模板引擎,比如:JSP.Velocity.Freemarker.Thymeleaf等等很多,那么模板引擎是干嘛用的? 模板引擎,顾名思义,是一款模板,模板中可以动态的写入一些参数, ...

  5. Java之利用Freemarker模板引擎实现代码生成器,提高效率

    https://blog.csdn.net/huangwenyi1010/article/details/71249258  java模板引擎freemarker代码生成器 更多 个人分类: 一步一步 ...

  6. Spring Boot 系列(五)web开发-Thymeleaf、FreeMarker模板引擎

    前面几篇介绍了返回json数据提供良好的RESTful api,下面我们介绍如何把处理完的数据渲染到页面上. Spring Boot 使用模板引擎 Spring Boot 推荐使用Thymeleaf. ...

  7. FreeMarker模板引擎

    现在开发的项目,也是基于SOA架构,每个功能接口都是用WebService实现,Web服务的通信协议就是用XML来传输. 以前写WebService都是自动生成XML,没想到这项目竟然要自己定义XML ...

  8. freemarker模板引擎的使用

    freemarker是一套前端模板引擎,在使用时,要先在web项目中添加freemarker.jar的依赖. 我在这里主要演示spring-mvc整合freemarker模板引擎.项目案例的文件包结构 ...

  9. Spring Boot☞ 使用freemarker模板引擎渲染web视图

    效果图 代码 package com.wls.integrateplugs.hello.controller; /** * Created by wls on 2017/8/24. */ import ...

随机推荐

  1. Java隐式类型转换和强制类型转换

    一.强制类型转换 char 和 整型之间的类型转换 char a7 = 'a'; System.out.println(a7); System.out.println( (int)a7 ); Syst ...

  2. 了解Django之前

      什么是web应用? 通俗地讲,就是通过浏览器访问一个网址,该网站从后台调取数据,然后把相应的界面展示给用户这样的一个过程. 什么是HTTP协议? 即超文本传输协议:规定了客户端与服务端消息传输的格 ...

  3. vue中如何判断checkbox是否选中

    console.log(event.target.checked)     例:  

  4. Part_three:Redis持久化存储

    redis持久化存储 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 1.RD ...

  5. UCOSII消息队列

    主结构体 typedef struct os_q { /* QUEUE CONTROL BLOCK */ struct os_q *OSQPtr; /* Link to next queue cont ...

  6. js中的call()、apply()、bind()

    js中的一个核心概念就是对this的理解,关于this前面也有说过,不过在有些情况下,还是需要手动去改变this的指向,这里总结一下,js中关于this操作的三种方法 call() apply() b ...

  7. [LeetCode] 64. 最小路径和 ☆☆☆(动态规划)

    描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入:[  [1,3,1], [1,5,1 ...

  8. python之编码与解码、is 与==的区别

    一.编码与解码 编码的过程其实就是采用一定的编码格式将unicode字符转换成str字符的过程 非ASCII码字符按字节为单位被编码成十六进制转义字符 解码采用的编码格式跟设置和环境有关 ascii ...

  9. web workers 实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. mysql安装好需要启动和停止服务

    启动mysql: mysql.server start 停止服务:mysql.server stop