FreeMarker使用

FreeMarker解析List<JSONObject>数据的疑惑 使用java从数据库查询出来如下List格式的数据,用于保存分类目录树: 理综 --- 物理 ------------ 高一物理 ------------ 高二物理 ------------ 高三物理 --- 化学 ------------ 高一化学 ------------ 高二化学 ------------ 高三化学 文综 --- 政治 --- 历史 [ { 阅读详情

使用FreeMarker实现向ftl模板中添加数据

Java代码中实现向list中添加数据

JSONObject map  = new JSONObject();
map.put("username", username);//放入map中
map.put("maxputoutdays", maxputoutdays);//放入map中

JSONObject result = new JSONObject();
JSONArray retArray = new JSONArray();
retArray.add(map);
result.put("array", retArray);//array提供为页面使用
//greatTempFile方法是将result里面的数据填充到projectdesc.ftl模板
ProjectDescToStringUtil.greatTempFile(null, result,"projectdesc.ftl");

ProjectDescToStringUtil工具类实现数据填充到模板

  • 需要jar包支持
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
</dependency>
  • 代码实现
public static String greatTempFile(HttpServletRequest request, JSONObject object,String templateFileName) {
        StringWriter writer = null;
        try {

            Configuration cfg = new Configuration();

            String url = ProjectDescToStringUtil.class.getClassLoader().getResource("/").getPath();
            //动态获取path
            String path = url.substring(url.indexOf("/"), url.lastIndexOf("/classes"))+"/ftl";;

            File dir = new File(path);
            cfg.setDirectoryForTemplateLoading(dir);
            Template t = cfg.getTemplate(templateFileName, "UTF-8"); // 模板文件名
            writer = new StringWriter();

            t.process(object, writer);

        } catch (Exception e) {
           //出异常,记录日志
        }

        return writer.toString();

    }

ftl模板中取值

  • 获取传递变量值:${item.username!},使用!防止空值报错

ftl模板中使用判断语句

  • 在<#if condition>中的condition条件应直接使用item.maxputoutdays取值,不能使用$符号类似这种${item.maxputoutdays!},负责会报错,无法识别。
<#list array as item> <#if item.maxputoutdays == '0'>满标当日
<#elseif item.maxputoutdays == '1'>满标次日
<#else>
满标第${item.maxputoutdays!}日
</#if>
</#list> 
  • 代码中的array类型为JSONObject extends HashMap implements Map
  • JSONArray extends ArrayList implements List

ftl模板制作(Windows环境)

  • 新建一个普通的txt文档,修改后缀为ftl即可
  • 以下为一个简单的ftl模板,内容为html代码片段
<#list array as item>
    <ul class="tabs">
        <li id="decsearch">
            <table width="500" border="1"
                style="border-collapse: collapse; border-spacing: 0; line-height: 30px;">
                <tr>
                    <td style="text-align: center;">借款用途</td>
                    <td style="padding-left: 5px;">${item.loanPurpose!}</td>
                </tr>
                <tr>
                    <td style="text-align: center;">募集期</td>
                    <td style="padding-left: 5px;">${item.investday!}天</td>
                </tr>
                <tr>
                    <td style="text-align: center;">起息日</td>
                    <td style="padding-left: 5px;">
                        <#if item.maxputoutdays == '0'>
                          募集满标当日
                        <#elseif item.maxputoutdays == '1'>
                         募集满标次日
                        <#else>
                          募集满标第${item.maxputoutdays!}日
                        </#if>
                    </td>
                </tr>
            </table>
        </li>
    </ul>
</#list>
【5G演进】4G到5G演进之网络架构与协议栈 4G到5G演进之网络架构与协议栈 阅读详情

相关推荐

HMC7044芯片模拟SPI配置

摘要: HMC7044是一款高性能双环路整数N分频抖动衰减器,支持SPI接口配置,适用于高速数据转换器时钟系统。该芯片采用双PLL级联架构,具有14路可配置输出,可满足GSM/LTE基站设计需求。SPI接口采用3线模式(SLEN/SCLK/SDATA),支持24位寄存器读写(13位地址+8位数据)。驱动实现基于Zynq EMIO模拟SPI,提供初始化、数据传输及寄存器配置功能,支持三线制工作模式和多种时钟参数设置。

toonyhe的博客 1094

FreeMarker-哈希表内建函数 学习

哈希表内建函数 一.语法 哈希表中包含元素:keys键,values值 keys:一个包含哈希表中查找到的键的序列 因为哈希表通常没有定义子变量的顺序,那么键名称的返回顺序就是任意的。 然而,一些哈希表维持一个有意义的顺序(询问程序员指定的哈希表是否是这样)。 比如,由上述 {…} 语法创建的哈希表保存了和你指定子变量相同的顺序。 values:一个包含哈希表中子变量的序列 注意并不是所有的哈希表...

宝拉天天想放假 571

abap中使用Screen painter为普通屏幕创建单选按钮组radiobutton组的过程

选择屏幕中,创建radiobutton组直接使用代码实现,如下所示 SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-001. PARAMETERS R1 RADIOBUTTON GROUP GR1. PARAMETERS R2 RADIOBUTTON GROUP GR1. PARAMETERS R3 RADIOBUTTON GR

charliefromkansas的博客 8301

Freemarker动态构造map,增加或改变元素

需求:遍历一个List,按照key值统计每个key值有多少个,将结果放到map中 由于freemarker不支持对map的直接操作,所以需要将对map的直接操作转化为重新构建新的map <!-- 初始化map --> <#assign creditDic = {}> <!-- 遍历list --> <#list report.creditTipss ...

cg_Amaz1ng的博客 2209

Android逆向实战:抖音聊天记录数据库解析与导出(附完整SQL查询)

本文提供了一份Android逆向实战指南,详细解析了抖音聊天记录数据库的结构与导出方法。通过定位核心的`im.db`数据库文件,深度解读conversation_list、msg等关键表结构,并附上完整的SQL查询语句,帮助开发者或研究人员安全、合规地提取和分析本地聊天数据,适用于移动安全研究与数据分析场景。

mango的博客 855

NVIDIA Isaac平台体验:Isaac Sim与Isaac ROS的快速了解

NVIDIA Isaac平台是一个专为机器人和人工智能(AI)打造的加速平台,旨在为开发者提供一个全面的工具集,以加速机器人相关应用的开发和部署。材质定义语言(MDL)是一种用于描述材质属性和行为的编程语言,能够精确地定义材质的光学特性和物理属性。NVIDIA Isaac Sim 通过支持 MDL,进一步提升了仿真环境中材质的真实感和细节表现。精确的材质定义:MDL 允许开发者精确地定义材质的光学特性和物理属性,如反射率、折射率、粗糙度和透明度等。这使得仿真环境中的物体看起来更加真实和自然。动态材质。

全世界的博客 4万+

freemarker中的list

freemarker list (长度,遍历,下标,嵌套,排序) 1. freemarker获取list的size :   Java ArrayList&lt;String&gt; list = new ArrayList&lt;String&gt;();   Freemaker ${list?size}     2. list的遍历:   &lt;#list anim...

水墨江南 1819

[基于STM32底盘控制与ROS上层导航小车制作] 第一节 stm32电机驱动与编码器读取反馈

系列文章目录 第一节stm32电机驱动与编码器读取反馈 第二节 stm32电机pid控制 第三节 stm32线速度标定 第四节 stm32添加mpu6050得到angle角度 第五节 实现STM32与ubuntu系统下的ROS串口DMA通信,传输底盘速度等信息 第六节 ROS计算和发布里程计 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 系列文章目录 前言 1.pwm与电机正反转 2.编码器初始化 二、pwm控制与编码器使用 1.pwm使电机 .

LanLanLan1927的博客 1万+

Freemarker的list指令和内建函数

Freemarker的list指令和内建函数 1.list指令 2.获取集合大小 3.JSON转换为对象 4.日期格式化 5.数字转换为字符串 6.运算符

Running_Tiger的博客 1万+

基于STM32L4XX、HAL库的MAX13487EESA RS485总线收发器驱动程序设计

MAX13487EESA是一款3.3V供电的RS-485/RS-422收发器,由Maxim Integrated生产。PA4 (控制引脚) ---> /RE, DE (连接在一起)具有±15kV ESD保护的驱动器输出和接收器输入。半双工RS-485/RS-422通信。工业温度范围:-40°C至+85°C。工作电压范围:3.0V至3.6V。数据速率高达250kbps。

zhusl6688的博客 685

1、符号回归:原理、应用与实践

本文全面介绍了符号回归(Symbolic Regression)的原理、发展历程、核心算法及其在科学与工程领域的广泛应用。文章从基本概念出发,详细阐述了基于遗传编程的符号回归机制,并探讨了其在游艇水动力学、化学过程、锂离子电池、生物医学等多个领域的实际应用。同时,博文还涵盖了高级技术如知识集成、系数优化、预测区间计算及微分方程发现等内容,对比了开源与商业软件工具,并展望了未来发展趋势,旨在为研究人员和从业者提供一本实用的符号回归指南。

ipfs8storage的博客 248

Freemarker的使用

和缓存的差别 共同点:都可以减小数据库的访问压力。 区别: (1)缓存技术适用于小规模的数据。以及一些经常变动的数据。 (2)网页静态化技术适用于大规模但是变化不太频繁的数据。 Freemarker指令: assign指令用于在页面上定义一个变量 (1)定义简单类型 <#assign linkman="周先生"> 联系人:${linkman} (2)定义对象类型 <#assign info={"mobile":"13812345678",'address...

m0_64702880的博客 3340

Python 神经计算实训 实训答案分享

【代码】Python 神经计算实训 实训答案分享。

2403_89314916的博客 346

Freemarker使用详解

1.什么是网页静态化技术 随着用户访问量以及数据量的增大,网页静态化技术方案如今越来越流行。 什么是网页静态化技术呢?简单来说就是将网页以纯静态方式的形式展现。 2.网页静态化技术与缓存技术的比较 共同点:都可以减小数据库的访问压力。 区别: (1)缓存技术适用于小规模的数据。以及一些经常变动的数据。 (2)网页静态化技术适用于大规模但是变化不太频繁的数据。 页面静态化与缓存技术的定义: 页面静态化是指通过一些模板技术(如freemarker)将数据模型生成静态html页面并通过..

qq_45441466的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

freemarker介绍及使用

FreeMarker快速入门 1. FreeMarker介绍 1.1 什么是FreeMarker Apache FreeMarker是一款开源的模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板使用FreeMarker Template Language(FTL)模板语言编写,这是一种简单的专用语言。模板用于展示数据,数据模型用于呈现什么数据。 模板

懵齐的博客 1808

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

FreeMarker template使用

赋值:<#assign val = 10> 输出:${val} 算数运算: <#-- 支持"+"、"-"、"*"、"/"、"%"运算符 --> <#assign number1 = 10> <#assign number2 = 5> "+" : ${number1 + number2} "-" : ${number1 - number2} "*" : ${number1 * number2} "/".

weixin_38320510的博客 6571

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring Boot中使用FreeMarker及FreeMarker入门

文章目录一、FreeMarker简介二、Spring Boot整合FreeMarker1.添加依赖2.相关配置3.FreeMarker文件模板三、使用示例四、FreeMarker常用指令 一、FreeMarker简介 Freemarker 模版后缀为 .ftl(FreeMarker Template Language)。FTL 是一种简单的、专用的语言,它不是像 Java 那样成熟的编程语言。在模...

huangjhai的博客 4043

freemarker的使用

1.在pom文件中添加依赖 <!--freemark--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <dependency>

weixin_44939526的博客 978

【Freemarker】Freemarker简介以及基本使用

【Freemarker】Freemarker简介以及基本使用1. 什么是Freemarker?2. Freemarker 快速入门2.1 环境搭建2.2 创建模板文件2.3 生成文件3. Freemarker 基本指令3.1 assign 指令3.2 if 指令3.3 list 指令3.4 include 指令4. 联合使用指令5. 常用内建函数6. 处理不存在的变量 1. 什么是Freemarker? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网

来日浅谈的博客 3159

freemarker的使用心得,freemarker使用心得

freemarker目前虽然使用的公司不多,但是在某些时候就必须使用,当需要遍历json数据的时候,目前市面上的好多显示组件都达不到要求唯一能用的也就只有freemarker了。在java里使用的模板引擎有velocity、freemarker,至于velocity由于比较古老加之功能也不及freemarker那么强大使用的人群已经很少了。这次打算系统性的分享我学习freemarker的心得。

LANGZI7758521的专栏 3283

FreeMarker使用总结

FreeMarker使用总结 1.FreeMarker概述   1)FreeMarker是一个模板引擎: 一个基于模板生成文本输出的通用工具,使用纯Java编写。          模板+数据模型=输出   2)FreeMarker被设计用来生成HTML Web页面,适合于作为Web应用程序的一个组件,特别适合于MVC应用程序的视图组件。 ========================

小李飞刀的专栏 1175

FreeMarker的使用

FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。模板编写为FreeMarker Template Language (FTL)

qq_56959223的博客 836

FreeMarker基础使用

一、装配使用 1、导入依赖 <!--SpringBootFreemarker模板依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> 2、在properties里进行配置 ##Freemarker配置 #

qq_57404736的博客 1637

springboot如何使用Freemarker模版引擎

1.Freemarker介绍 Freemarker是三大主流模版引擎之一,与Jsp,Velocity并称“三剑客“。 2.Freemarker集成方案 ①在pom.xml中添加依赖 <!-- freemarker 依赖 --> <dependency> <groupId>org.springframework.boot</groupI...

蔡定努 726
上一篇: SpringMVC请求流程
下一篇: Java实现身份证获取年龄
木头房子的
博客等级 码龄9年 7粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值