freemarker

Springboot2.X + screw数据库快速开发文档(74)

回眸只為那壹抹淺笑 提交于 2020-08-11 14:56:20
1、pom依赖 创建springboot项目,勾选依赖 添加screw需要的依赖,检查是否最新版本,链接地址-> 最新版本 <dependency> <groupId> org.freemarker </groupId> <artifactId> freemarker </artifactId> <version> 2.3.30 </version> </dependency> <dependency> <groupId> cn.smallbun.screw </groupId> <artifactId> screw-core </artifactId> <version> 1.0.3 </version> </dependency> 2、测试类 下面填写自己的mysql账号密码 spring.datasource.url = spring.datasource.username = spring.datasource.password = spring.datasource.driver-class-name = com . mysql . cj . jdbc . Driver spring.datasource.xa.properties.useInformationSchema = true 3、生成文档测试类 /Users/mac/Desktop 这个是自己电脑的路径

java利用Freemarker模板生成docx格式的word文档(全过程)

最后都变了- 提交于 2020-08-11 12:47:38
参考: https://my.oschina.net/u/3737136/blog/2958421?tdsourcetag=s_pcqq_aiomsg 具体思路 1.创建一个docx文档模板,其中的英文是根据自己需要填充的内容。 2.把docx文档修改为ZIP格式(修改.docx后缀名为.zip),然后把zip解压到当前目录 3.修改word目录下document.xml文档,把如下原来是time改为${time},改好后放入项目中,用于后边内容填充。【有时候一个单词可能会被拆分,自己要做相应的调整】 <#list minuteList as minute></#list> 可用于循环填充,相当于 for (Minute minte:minuteList),示列如下: < #list minuteList as minute > < w:p w14:paraId ="3BB7AF6B" w14:textId ="2AD2E958" w:rsidR ="00D80192" w:rsidRDefault ="00C4552D" w:rsidP ="00E47882" > < w:pPr > < w:pStyle w:val ="a6" /> < w:numPr > < w:ilvl w:val ="0" /> < w:numId w:val ="2" /> </ w:numPr > <

jar包中设置模板路径方式

僤鯓⒐⒋嵵緔 提交于 2020-08-11 11:36:59
背景:发送定时邮件,邮件形式为一个html页面,html模板在resources路径下,使用FreeMarker创建模板对象 在本地测试时,可以读取到并取到后台传的数据。所以大意了,没有在测试环境触发,在生产环境时发现抱错找不到模板路径。 打jar包之后和在本地读是有区别的: 修改后成功在生产环境成功使用 参考: https://www.cnblogs.com/fangjian0423/p/freemarker-templateloading-question.html 来源: oschina 链接: https://my.oschina.net/u/4177395/blog/4415635

java利用Freemarker模板生成docx格式的word文档(全过程)

青春壹個敷衍的年華 提交于 2020-08-11 10:59:53
参考: https://my.oschina.net/u/3737136/blog/2958421?tdsourcetag=s_pcqq_aiomsg 具体思路 1.创建一个docx文档模板,其中的英文是根据自己需要填充的内容。 2.把docx文档修改为ZIP格式(修改.docx后缀名为.zip),然后把zip解压到当前目录 3.修改word目录下document.xml文档,把如下原来是time改为${time},改好后放入项目中,用于后边内容填充。【有时候一个单词可能会被拆分,自己要做相应的调整】 <#list minuteList as minute></#list> 可用于循环填充,相当于 for (Minute minte:minuteList),示列如下: < #list minuteList as minute > < w:p w14:paraId ="3BB7AF6B" w14:textId ="2AD2E958" w:rsidR ="00D80192" w:rsidRDefault ="00C4552D" w:rsidP ="00E47882" > < w:pPr > < w:pStyle w:val ="a6" /> < w:numPr > < w:ilvl w:val ="0" /> < w:numId w:val ="2" /> </ w:numPr > <

java利用Freemarker模板生成docx格式的word文档(全过程)

可紊 提交于 2020-08-11 09:48:13
参考: https://my.oschina.net/u/3737136/blog/2958421?tdsourcetag=s_pcqq_aiomsg 具体思路 1.创建一个docx文档模板,其中的英文是根据自己需要填充的内容。 2.把docx文档修改为ZIP格式(修改.docx后缀名为.zip),然后把zip解压到当前目录 3.修改word目录下document.xml文档,把如下原来是time改为${time},改好后放入项目中,用于后边内容填充。【有时候一个单词可能会被拆分,自己要做相应的调整】 <#list minuteList as minute></#list> 可用于循环填充,相当于 for (Minute minte:minuteList),示列如下: < #list minuteList as minute > < w:p w14:paraId ="3BB7AF6B" w14:textId ="2AD2E958" w:rsidR ="00D80192" w:rsidRDefault ="00C4552D" w:rsidP ="00E47882" > < w:pPr > < w:pStyle w:val ="a6" /> < w:numPr > < w:ilvl w:val ="0" /> < w:numId w:val ="2" /> </ w:numPr > <

这就是Java代码生成器的制作流程

大兔子大兔子 提交于 2020-08-10 20:11:21
1. 前言 前几天写了篇关于 Mybatis Plus代码生成器 的文章,不少同学私下问我这个代码生成器是如何运作的,为什么要用到一些模板引擎,所以今天来说明下代码生成器的流程。 2. 代码生成器的使用场景 我们在编码中存在很多样板代码,格式较为固定,结构随着项目的迭代也比较稳定,而且数量巨大,这种代码写多了也没有什么技术含量,在这种情况下代码生成器可以有效提高我们的效率,其它情况并不适于使用代码生成器。 3. 代码生成器的制作流程 首先我们要制作模板,把样板代码的固定格式抽出来。然后把动态属性绑定到模板中,就像做填空题一样。所以在这个流程中模板引擎是最合适的。我们通过使用模板引擎的语法将数据动态地解析到静态模板中去,然后导出为编程中对应的文件就行了。 另外模板引擎有着丰富的绑定数据的指令集,可以让我们根据条件动态的绑定数据到模板中去。以 Freemarker 为例: 三元表达式: ${true ? 'checked': ''} 还有我们等下要用的遍历列表: <#list fields as field> private ${field.fieldType} ${field.fieldName}; </#list> 在Java开发中我们常用的模板引擎有 Freemarker 、 Velocity 、 Thymeleaf ,随着 Web

Freemarker核心概念

久未见 提交于 2020-08-10 09:10:10
要自定义keycloak页面,必要先熟悉其采用的模板引擎freemarker,读懂base模板代码。要理解其工作原理及术语,方便交流,有选择的使用前端技术替换实现。 工作原理 模板引擎 是一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板引擎基于已经准备好的数据和模板来渲染HTML。数据放在多层嵌套的map结构中,当模板中使用点符号取数据,本质是一层层的从map中get。模板解析器会读取模板的字符,解析模板引擎的标签,表达式等,替换或生成对应的数据。 数据模型 为模板准备的数据整体被称作为 数据模型 。 数据模型是树形结构,在Java中实现就是多层map。 变量 模型中的key,取出对应的value替换变量。 方法 方法变量在存于实现了 TemplateMethodModel 接口的模板中。 public class IndexOfMethod implements TemplateMethodModel { ...... } root.put("indexOf", new IndexOfMethod()); ${indexOf("met", x)} 模板 .ftl文件,最简单的模板通常是普通的HTML文件,文件中自然可以包含html

FreeMarker快速入门详解(一)

自古美人都是妖i 提交于 2020-08-08 12:18:34
​​​​​​一. freemarker 概述 模板引擎 只是根据模板的内容,将数据模型在模板中显示并输出文件(通常为html,也可以生成其它格式的文本文件) 数据模型:数据模型在java中可以是基本类型也可以List、Map、Pojo等复杂类型 模板 输出 常见的模板引擎 常用的java模板引擎哪些? 模板名称 描述 扩展名 jsp JavaEE规范中一个技术,在html代码中可以嵌入Java代码。开发中老项目还使用,新项目使用比较少。 *.jsp Freemarker 模板技术 *.ftl Thymeleaf 模板技术 *.th Velocity 模板技术 *. vm 二.环境搭建 此篇环境搭建父项目同MongoDB篇刚开始搭建的父类项目是同样流程, 可直接参考我前面博客 https://my.oschina.net/ithuang/blog/4315825 FreeMarker: 步骤一:父项目搭建好后, 创建子模块 步骤二: 然后直接点下一步 步骤三:最后输入项目名即可 步骤四: 添加Pom.xml坐标 < dependencies > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-freemarker </

Spring Boot 五种热部署方式,极速开发就是生产力!

霸气de小男生 提交于 2020-08-08 00:58:15
作者:若离x 来源:my.oschina.net/ruoli/blog/1590148 1、模板热部署 在 Spring Boot 中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的,因此我们可以在application.properties中关闭模版引擎的缓存,如下: Thymeleaf的配置: spring.thymeleaf.cache=false FreeMarker的配置: spring.freemarker.cache=false Groovy的配置: spring.groovy.template.cache=false Velocity的配置: spring.velocity.cache=false 2、使用调试模式Debug实现热部署 此种方式为最简单最快速的一种热部署方式,运行系统时使用Debug模式,无需装任何插件即可,但是无发对配置文件,方法名称改变,增加类及方法进行热部署,使用范围有限。 3、spring-boot-devtools 在 Spring Boot 项目中添加 spring-boot-devtools依赖即可实现页面和代码的热部署。详细用法可以参考这篇文章: Spring Boot 实现热部署 。 如下: <dependency> <groupId>org.springframework.boot<

java利用Freemarker模板生成docx格式的word文档(全过程)

强颜欢笑 提交于 2020-08-07 19:32:39
参考: https://my.oschina.net/u/3737136/blog/2958421?tdsourcetag=s_pcqq_aiomsg 具体思路 1.创建一个docx文档模板,其中的英文是根据自己需要填充的内容。 2.把docx文档修改为ZIP格式(修改.docx后缀名为.zip),然后把zip解压到当前目录 3.修改word目录下document.xml文档,把如下原来是time改为${time},改好后放入项目中,用于后边内容填充。【有时候一个单词可能会被拆分,自己要做相应的调整】 <#list minuteList as minute></#list> 可用于循环填充,相当于 for (Minute minte:minuteList),示列如下: < #list minuteList as minute > < w:p w14:paraId ="3BB7AF6B" w14:textId ="2AD2E958" w:rsidR ="00D80192" w:rsidRDefault ="00C4552D" w:rsidP ="00E47882" > < w:pPr > < w:pStyle w:val ="a6" /> < w:numPr > < w:ilvl w:val ="0" /> < w:numId w:val ="2" /> </ w:numPr > <