SpringBoot获取Freemarker模板引擎,生成HTML代码
今天用Ajax异步添加评论,加载Freemarker模板引擎,生成模板模块
1.新建Freemarker模板
- <li id="${comment.oId}">
- <div>
- <div class="avatar tooltipped tooltipped-n" aria-label="${comment.commentName}"
- style="background-image: url(${comment.commentThumbnailURL})"></div>
- <main>
- <div class="fn-clear">
- <#if "http://" == comment.commentURL>
- ${comment.commentName}
- <#else>
- <a class="user-name" href="${comment.commentURL}" target="_blank">${comment.commentName}</a>
- </#if>
- <#if comment.isReply>
- @<a class="user-name" href="/${article.articlePermalink}#${comment.commentOriginalCommentId}"
- onmouseover="page.showComment(this, '${comment.commentOriginalCommentId}', 23);"
- onmouseout="page.hideComment('${comment.commentOriginalCommentId}')"
- >${comment.commentOriginalCommentName}</a>
- </#if>
- <time class="ft-gray">${comment.commentDate?string("yyyy-MM-dd HH:mm")}</time>
- <#if article.articleCommentable==1>
- <a class="reply-btn" href="javascript:replyTo('${comment.oId}')">${replyLabel}</a>
- </#if>
- </div>
- <div class="content-reset">
- ${comment.commentContent}
- </div>
- </main>
- </div>
- </li>
2.新建FreemarkerUtils工具类
- package com.fdzang.mblog.utils;
- import freemarker.template.Configuration;
- import freemarker.template.Template;
- import freemarker.template.TemplateException;
- import freemarker.template.TemplateExceptionHandler;
- import java.io.File;
- import java.io.IOException;
- import java.io.StringWriter;
- import java.util.Map;
- public class FreemarkerUtils {
- public static String getTemplate(String template, Map<String,Object> map) throws IOException, TemplateException {
- Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
- String templatePath = FreemarkerUtils.class.getResource("/").getPath()+"/templates";
- cfg.setDirectoryForTemplateLoading(new File(templatePath));
- cfg.setDefaultEncoding("UTF-8");
- cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
- cfg.setLogTemplateExceptions(false);
- cfg.setWrapUncheckedExceptions(true);
- Template temp = cfg.getTemplate(template);
- StringWriter stringWriter = new StringWriter();
- temp.process(map, stringWriter);
- return stringWriter.toString();
- }
- }
template为模板的名称,Map为需要插入的参数
关于加载模板位置的方法,借鉴于
https://blog.csdn.net/gtlishujie/article/details/52300381
我就不多加累述了,关键在于获取文件路径,文件路径不对的话,可以试着输出然后调试,个人推荐文件加载这个方法
3.Controller层的方法
- Map<String,Object> map=new HashMap<>();
- map.put("article",article);
- map.put("comment",comment);
- map.put("replyLabel","回复");
- String cmtTpl= FreemarkerUtils.getTemplate("common-comment.ftl",map);
- result.setCmtTpl(cmtTpl);
定义好Map参数,指定加载的模板引擎,就可以得到解析后的HTML了
SpringBoot获取Freemarker模板引擎,生成HTML代码的更多相关文章
- springboot整合freemarker模板引擎后在页面获取basePath绝对路径
在项目中引用静态资源文件或者进行ajax请求时我们有时候会使用 ${basePath} ,其实这就是一种获取绝对路径的方式: 那么在springboot项目中要怎么配置才能使用 basePaht呢? ...
- 使用freemarker模板引擎生成word文档的开发步骤
1.准备模板文档,如果word文档中有表格,只保留表头和第一行数据:2.定义变量,将word文档中的变量用${var_name}替换:3.生成xml文件,将替换变量符后的word文档另存为xml文件: ...
- Spring Boot 揭秘与实战(七) 实用技术篇 - FreeMarker 模板引擎
文章目录 1. FreeMaker 代替 JSP 作为页面渲染 2. 生成静态文件 3. 扩展阅读 4. 源代码 Spring Boot 提供了很多模板引擎的支持,例如 FreeMarker.Thym ...
- SpringBoot日记——Thymeleaf模板引擎篇
开发通常我们都会使用模板引擎,比如:JSP.Velocity.Freemarker.Thymeleaf等等很多,那么模板引擎是干嘛用的? 模板引擎,顾名思义,是一款模板,模板中可以动态的写入一些参数, ...
- Java之利用Freemarker模板引擎实现代码生成器,提高效率
https://blog.csdn.net/huangwenyi1010/article/details/71249258 java模板引擎freemarker代码生成器 更多 个人分类: 一步一步 ...
- Spring Boot 系列(五)web开发-Thymeleaf、FreeMarker模板引擎
前面几篇介绍了返回json数据提供良好的RESTful api,下面我们介绍如何把处理完的数据渲染到页面上. Spring Boot 使用模板引擎 Spring Boot 推荐使用Thymeleaf. ...
- FreeMarker模板引擎
现在开发的项目,也是基于SOA架构,每个功能接口都是用WebService实现,Web服务的通信协议就是用XML来传输. 以前写WebService都是自动生成XML,没想到这项目竟然要自己定义XML ...
- freemarker模板引擎的使用
freemarker是一套前端模板引擎,在使用时,要先在web项目中添加freemarker.jar的依赖. 我在这里主要演示spring-mvc整合freemarker模板引擎.项目案例的文件包结构 ...
- Spring Boot☞ 使用freemarker模板引擎渲染web视图
效果图 代码 package com.wls.integrateplugs.hello.controller; /** * Created by wls on 2017/8/24. */ import ...
随机推荐
- Java隐式类型转换和强制类型转换
一.强制类型转换 char 和 整型之间的类型转换 char a7 = 'a'; System.out.println(a7); System.out.println( (int)a7 ); Syst ...
- 了解Django之前
什么是web应用? 通俗地讲,就是通过浏览器访问一个网址,该网站从后台调取数据,然后把相应的界面展示给用户这样的一个过程. 什么是HTTP协议? 即超文本传输协议:规定了客户端与服务端消息传输的格 ...
- vue中如何判断checkbox是否选中
console.log(event.target.checked) 例:
- Part_three:Redis持久化存储
redis持久化存储 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 1.RD ...
- UCOSII消息队列
主结构体 typedef struct os_q { /* QUEUE CONTROL BLOCK */ struct os_q *OSQPtr; /* Link to next queue cont ...
- js中的call()、apply()、bind()
js中的一个核心概念就是对this的理解,关于this前面也有说过,不过在有些情况下,还是需要手动去改变this的指向,这里总结一下,js中关于this操作的三种方法 call() apply() b ...
- [LeetCode] 64. 最小路径和 ☆☆☆(动态规划)
描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入:[ [1,3,1], [1,5,1 ...
- python之编码与解码、is 与==的区别
一.编码与解码 编码的过程其实就是采用一定的编码格式将unicode字符转换成str字符的过程 非ASCII码字符按字节为单位被编码成十六进制转义字符 解码采用的编码格式跟设置和环境有关 ascii ...
- web workers 实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mysql安装好需要启动和停止服务
启动mysql: mysql.server start 停止服务:mysql.server stop