freemaker常用语法
来源:互联网 发布:手机测谎软件 编辑:程序博客网 时间:2024/05/18 21:08
FreeMarker简介
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。所谓模板,就是一份已经写好了基本内容,有着固定格式的文档,其中空出或者用占位符标识的内容,由使用者来填充,不同的使用者给出的数据是不同的。在模板中的占位符,在模板运行时,由模板引擎来解析模板,并采用动态数据替换占位符部分的内容。
FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 文等。
前提:将数据封装到map中,每个元素可以是个对象,有属性,有关联的对象
properties 为准备好的Map对象集合,
注意:freeMarker控制较严格,数据如果为null会报错。
== 常用方法
${ package } packge为变量,为map的key,${}后可以直接显示内容;
${.now} 当前时间
className=dept
${ className?cap_first } 首字母大写
${ className?uncap_first } 首字母小写
全小写
<#if (list.title?length>15)> 字符串长度
${ package?replace(".","/") } 替换
== html
html 用于将字符串中的<、>、&和“替换为对应得<>":&
== 特殊字符替换
$ ${'$'}
# ${'#'}
== FreeMarker不会自动进行类型的转换
常见的转换:
String -> int ?eval
int -> String ?c
== for循环
properties 为准备好的Map对象集合,
表结构-----------------元数据(MetaData)
<#list properties as pro>
private ${pro.proType} ${pro.proName};<#if pro.proComment != "">//${pro.proComment}</#if>
</#list>
== 定义变量,显示变量
<#assign x=pro.proName?index_of("createBy")>
${x}
布尔类型转换为字符串显示
<#assign x=pro.primary?string('yes', 'no')>
${x}
==布尔判断
<#if pro.primary>
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
</#if>
<#if pro.primary?string('yes', 'no')=="no">
<#if "createBy,createDept,createTime,updateBy,updateTime"?index_of(pro.proName) == -1>
public ${pro.proType} get${pro.proName?cap_first}() {
return this.${pro.proName};
}
public void set${pro.proName?cap_first}(${pro.proType} ${pro.proName}) {
this.${pro.proName} = ${pro.proName};
}
</#if>
</#if>
==判断空串
<#if pro.proComment != "">//${pro.proComment}</#if>
1. 判断对象是否存在(null)
经常会用到,如果对象 != null 则xxxx,在freemarker中表达比较奇怪,例如判断 target 是否为null,如果不为 nll 则做xxx动作
<#if target??>
xxxx
</#if>
(目标变量后面连续两个??)
2. 字符串或数字比较
java里标准字符串比较需要 .equals() 方法,在freemarkder中进行了简化,字符串的比较方法和数字做到完全一样
<#if str == "success">
xxx
</#if>
<#if str !== "error">
xxx
</#if>
==判断是否包含子串:
pro.proName为子串
<#if "CreateBy,CreateDept,CreateTime"?index_of(pro.proName)==-1>
== 高级应用:宏
业务:实现每个文件引入版本
CopyRight.ftl
<#macro CopyRight>
/**
* @Description: ${ className }Service接口
* @Author: userName
* @Company: http://www.java.ccom
* @CreateDate: ${.now}
*/
</#macro>
调用:
<#import "CopyRight.ftl" as my>
<@my.CopyRight/>
附:freemaker jsp velocity比较
以前做web开发页面层用的基本就是就是,最近公司Java项目页面层用的技术是velocity。听说jsp要淘汰,也不知道是真是假,但本人还是比较喜欢jsp的,下面是网上查找的javaweb项目页面3种技术的区别。
在java领域,表现层技术主要有三种:jsp、freemarker、velocity。
jsp是大家最熟悉的技术
优点:
1、功能强大,可以写java代码
2、支持jsp标签(jsp tag)
3、支持表达式语言(el)
4、官方标准,用户群广,丰富的第三方jsp标签库
5、性能良好。jsp编译成class文件执行,有很好的性能表现
缺点:
jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。
velocity是较早出现的用于代替jsp的模板语言
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能良好,据说比jsp性能还要好些
3、使用表达式语言,据说jsp的表达式语言就是学velocity的
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多。
3、对jsp标签支持不够好
freemarker
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便
6、使用表达式语言
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多
选择freemarker的原因:
1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
2、宏定义比jsp tag方便
3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便
4、支持jsp标签
5、可以实现严格的mvc分离
- freemaker 常用语法总结
- freemaker常用语法
- Freemaker FTL指令常用标签及语法
- Freemaker FTL指令常用标签及语法
- Freemaker FTL指令常用标签及语法
- Freemaker FTL指令常用标签及语法
- Freemaker FTL指令常用标签及语法
- freemaker语法
- freemaker的标记语法
- freemaker的语法问题
- freemaker语法学习
- freemaker常用功能
- FreeMaker 常用标签
- FreeMaker语法大全及示例
- freemaker String 常见操作语法
- freemaker String 常见操作语法
- FreeMaker
- freemaker
- 【安全】WannaCry-一周目体验
- 微信小程序:隐藏控件
- Python通过url获取图片的几种方法
- Win10/Win7小技巧:教你如何彻底关闭系统进程
- 二分查找的注意事项
- freemaker常用语法
- git tag的类型及其命令详解
- 1.2 第一个Windows应用程序实例
- 与Mysql互交(增/删/改/查)
- Java四种线程池的使用
- servlet多请求处理
- [BZOJ4828][Hnoi2017]大佬-DP+DFS
- 2017东北地区赛D题 splay
- LeetCode -- 96. Unique Binary Search Trees