freemarket 模板技术

与web容器没什么关系

可以用struct2作为视图组件

 

第一步导入jar包

项目目录下建立一个templates目录

在此目录下建立一个模板文件a.ftl文件

 

Java代码

创建实例 –创建模板目录—创建数据模型(树状的)--加载模板文件--- 生成数据(需要一个输出流)

 

import java.io.File;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.HashMap;

import java.util.Map;

 

import freemarker.template.Configuration;

import freemarker.template.Template;

 

public
class Test_two {

    public
static
void main(String[] args) throws Exception {

        //创建freemarker配置实例

        Configuration cfg=new Configuration();

        //创建模板目录

        cfg.setDirectoryForTemplateLoading(new File("templates"));

        

        //创建数据模型

        Map root=new
HashMap();

        root.put("user", "老程");

        //加载模板文件

        Template t1=cfg.getTemplate("a.ftl");

        

        //显示生成的数据//将map里的数据和模板合并到一起

        Writer out=new OutputStreamWriter(System.out);

        t1.process(root, out);

        out.flush();

        out.close();

        

        

    }

}

<#if user=="老高">我们的老师</#if>

数据类型

Gt大于

Gte大于等于

遍历集合

<#list lst as dizi>

<b>${dizhi..}</b><br/>

</#list>

包含指令

<#include "filename"/>

定义宏指令

<#macro ml>

    <b>aaabb</b>

    <b>aaabb</b>

</#macro>

调用宏:<@ml />

也可传递参数,并对带参数操作

 

Nested指令

<#macro border >

<table border=4 cellspacing=0 cellpadding=4><tr><td>

<#nested>

</td></tr></table>

</#macro>

<@border > 表格中的内容</@border>

<#assign mail="111.cpm">定义变量的

命名空间

<#improt "filename" as bb/>

可以通过 in bb 给bb里的东西赋值

 

时间对象的格式化

${date?string("yyyy-MM-dd HH:mm:ss")}

 

FreeMarker提供两个运算符来避免空值:
1. !: 指定缺失变量的默认值;
2. ??:判断变量是否存在。
!运算符有两种用法:variable!或variable!defaultValue。第一种用法不给变量指定默认值,表明默认值是空字符串、长度为0的集合、或长度为0的Map对象。
使用!运算符指定默认值并不要求默认值的类型和变量类型相同。

测试空值处理:

<#-- ${sss} 没有定义这个变量,会报异常! -->

${sss!} <#--没有定义这个变量,默认值是空字符串! -->

${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc! -->

 

    ??运算符返回布尔值,如:variable??,如果变量存在,返回true,否则返回false。

    

Freemaker的了解的更多相关文章

  1. freemaker时间格式转换,精确到毫秒

    在开发中,需要将时间以 2016-09-20 12:00:01:723 的形式里用freemaker展示在页面上,找了好久,终于找到了答案. "createTime":" ...

  2. FreeMaker实现变量求和

        今天在项目上遇到统计分页页面的某个字段的总和,前台页面是使用FreeMaker实现的,记录一下: <#assign tprice = 0 > <#list orderlist ...

  3. 【FreeMaker】FreeMaker学习-基础

    转载请标明出处:http://www.cnblogs.com/ssslinppp 阅读目录 -04-08 08:08:08 Pacific Daylight Time Tue, Apr 8, '03 ...

  4. 【freemaker】之FreeMakerUtil工具类

    Freemaker生成文件常用工具类 public class FreemakerUtil { private static FreemakerUtil util; private static Co ...

  5. 【freemaker】之整合springMVC

    pom.xml文件 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncod ...

  6. 【freemaker】之eclipse安装freemaker-IDE

    eclipse安装插件一般我喜欢手动安装,有种可控的感觉! 首先需要下载freemaker-IDEhttp://freemarker-ide.sourceforge.net/ 下载之后解压得到 在ec ...

  7. 【freemaker】之Unknown built-in variable: now

    Caused by: freemarker.core.ParseException: Unknown built-in variable: now 意思是没有内置变量,看了一下源码2.3.15版本fr ...

  8. freemaker分页备忘

    思路:定义一个freemaker宏,接收参数.然后在freemaker页面上import这个文件,把参数传进来在server端渲染. 分页标签:pager.ftl <#-- 自定义的分页指令. ...

  9. freemaker的基本语法

    先来解释一下freemaker的基本语法了,<# ... > 中存放所有freemaker的内容,之外的内容全部原样输出.<@ ... /> 是函数调用两个定界符内的内容中,第 ...

  10. 表现层技术以及Freemaker使用教程

    表现出计数以及Freemaker详解 在java领域,表现层技术主要有三种:jsp.freemarker.velocity.jsp是大家最熟悉的技术优点: 1.功能强大,可以写java代码 2.支持j ...

随机推荐

  1. 添加Nginx为系统服务(设置开机启动)

    在本节中,我们将创建一个脚本,将Nginx守护进程转换为实际的系统服务. 这有两个作用:守护程序可以使用标准命令控制,更重要的是,它可以在系统启动时自动启动,并在系统关闭时停止. System V s ...

  2. EXCEL 偶数、奇数行分开求和公式

    例举 : A1行是 123 A2行是 321 A3行是 456 A4行是 789我是加的是A1+A3得出的和还有加的是A2+A4得出的和因为要A1+A3一直加到A601,我用很笨的方式像这样子一个个加 ...

  3. ORB-SLAM2(1) Linux下配置和编译

    ORB-SLAM2 官网:https://github.com/raulmur/ORB_SLAM2 配置教程:http://blog.csdn.net/zzlyw/article/details/54 ...

  4. 报表嵌入到.net系统页面

    目录: 1. 问题描述 2. 情形一:报表整体嵌入在.net系统框架中 3. 情形二:报表嵌入.net系统的某个页面中 4.权限控制方式 5.嵌入问题解决 1. 问题描述编辑 报表部署到Web应用服务 ...

  5. maven的build

    1.maven-compiler-plugin 作用 编译作用java中获取接口(方法)中的参数名字(eclipse设置编译参数)(java8 javac -parameters)https://bl ...

  6. gensurf

    我来做个福利吧,首先将模糊文件.fis,加载到workspace中,这个大家都会,利用上面说的那个例子a = readfis('tipper');gensurf(a)这样默认的就是前两个输入的曲线,要 ...

  7. 【Codeforces Gym 100725K】Key Insertion

    Codeforces Gym 100725K 题意:给定一个初始全0的序列,然后给\(n\)个查询,每一次调用\(Insert(L_i,i)\),其中\(Insert(L,K)\)表示在第L位插入K, ...

  8. 置顶博客一览表($My~Top~List$)

    咳,主要是因为我觉得置顶博客太多了让人很晕233 以下是(伪)置顶的博客: 笙上月 \(\color{red}{Link}\) 笔下梅 \(\color{red}{Link}\) 老年\(OIer\) ...

  9. 13-(基础入门篇)系统教程演示(GPRS模块)

    https://www.cnblogs.com/yangfengwu/p/9966702.html 前几节作为基础教程和系统教程的开端,有了前面的基础才更好的学习基础教程和系统教程. https:// ...

  10. 自行实现高性能MVC

    wcf虽然功能多.扩展性强但是也面临配置忒多,而且restful的功能相当怪异,并且目前没法移植.asp.net core虽然支持webapi,但是功能也相对繁多.配置复杂.就没有一个能让码农们安安心 ...