• Java模板引擎Freemarker


    1、取值(插值)指令

    常用${var} 语法进行取值;
    对null、不存在对象取值${var!}
    取包装对象的值,通过“点”语法:${User.name}
    
    取值的时候可以进行计算、赋值
    Date类型格式${date?String('yyyy-MM-dd')}
    如何转义HTML内容:${var?html} 
    
    不能转义Java.Util的Date;可以转义Java.sql的Date;
    日期:${dateVar?string('yyyy-MM-dd')}
    
    如果对象为null;
    ${var!}    、    ${var!'我是默认值'}
    不存在的变量:
    missing:${sssVar!'我是默认值'}
    

    变量的定义、赋值、运算:

    //赋值&运算
    <#assign a=100/>
    a = <font color="red">${a}</font>
    a+100=<font color = "red">${a+100}</font>
    

    自定义对象User变量的取值:
    ${(userObj.name)!}:对整体加一个()括号,则先判断前面的userObj是否存在,然后判断后面的.name是否存在;
    ${(userObj.name)!‘我是默认值’}:Freemarker对单引号和双引号没有区别。

    输出富文本:

    	user.setBrief("<font color='red'>此处编辑富文本!</font>");
    	${(userObj.brief)}
    	若想将其中的html语句也输出,则:
    	${(userObj.brief)!?html}
    

    集合List的遍历:

    	ModelAndView mv = new ModelAndView("index");
    
    	List<String> list = new ArrayList<String>();
    	list.add("a");
    	list.add("a");
    	mv.addObject("myList",list);
    前台取值:
    	<#list myList as item>
    		<font color="red">${item!}</font>
    	</#list>
    

    集合Map的遍历:

    	ModelAndView mv = new ModelAndView("index");
    
    	Map<String,String> map = new HashMap<String,String>();
    	map.put("a",1);
    	map.put("b",2);
    	mv.addObject("map",map);
    前台取值:
    	<#list map?keys as key>
    		<font color="red">${key}:${map[key]}</font>
    	</#list>
    

    2、逻辑指令:if、switch

    	//定义一个变量	
    	<#assign var=99/>
    	//if表达式
    	<#if var ==99>
    		<font color="red">var = 99 </font>
    	</#if>
    
    	<#if var ==99>
    		<font color="red">var = 99 </font>
    	<#else>
    		<font color="red">var != 99</font>
    	</#if>
    
    	//如果大于99
    	<#if var $gt;99>
    		<font color="red">var 大于 99 </font>
    	<#elseif var==99>
    		<font color="red">var = 99</font>
    	<#else>
    		<font color="red">var 小于 99</font>
    	</#if>
    	
    
    	//加两个??,判断变量是否存在,如果存在,执行里面的语句,否则不执行。
    	//??也等价于<#if mylist?exists><#if myList??>
    		<#list myList as item>
    			${item}
    		</#list>
    	</#if>
    

    if多条件判断:||、&&、!

    	<#assign var = 'python'>
    
    	<#if var =="python" || var =='java'>
    		<font color="red">python or java</font>
    	</#if>
    
    	//?length判断字符串长度
    	<#if var = 'python' && var?length==6>
    		<font color="red">python 长度为6</font>
    	</#if>
    

    Switch语法:包含switch,case,break,default;

    	<#assign = var = 10 />
    	<#switch var>
    		<#case 10>
    			10<br/>
    			<#break>
    		<#case 100>
    			100<br/>
    			<#break>
    		<#default>
    			other
    	</#switch>
    		
    

    3、字符串、集合操作

    	//定义两个变量a,b
    	<#assign a ='hello'/>
    	<#assign b ='world'/>
    	//连接
    	${a+b}
    	//截取
    	${(a+b)?substring(5,8)}
    	//长度
    	${(a+b)?length}
    	//大写
    	${(a+b)?upper_case}
    	//小写
    	${(a+b)?lower_case}
    	//index_of
    	${(a+b)?index_of('w')}
    	//last_index_of:单词最后一次出现的地方
    	${(a+b)?last_index_of('0')}
    	//replace
    	${(a+b)?replace('o','xx')}
    

    4、自定义函数

    自定义函数(整数排序 sort_int)

    	<#assign myList=[2,3,1,4,6,9,7] />
    	//未排序
    	<#list myList as item>
    		${item},
    	</#list>
    	//排序
    	<#list sort_int(myList) as item>
    		${item},
    	</#list>
    //sort_int从哪里来呢?
    	//controller;
    	ModelAndView mv = new ModelAndView("index");
    	mv.addObject("sort_int",new SortMethod());
    	return mv;
    

    1

    5、list排序内建函数、常用指令

    	<#assign myList=[2,3,1,4,6,9,7] />
    	//排序
    	<#list myList?sort as item>
    		${item_index}:${item}
    	</#list>
    
    	//倒叙
    	<#list myList?sort?reverse as item>
    	//长度
    	${myList?size}
    	//下表
    	${myList[3]}
    

    6、自定义指令

    内置指令用#;
    自定义指令用@;

    7、freemarker常用内建函数

    7.1 处理字符串内建函数

    substring、cap_first(首字母变大写的函数)、ends_with(以…结尾)、contains(字符串是否包含目标字符串);

    date、datetime、time。如何把字符串转为这三个格式的类型。

    starts_with(字符串以…开始)、index_of(字符串所在的位置)、last_index_of(字符串最后所在的位置)、spilt(分割,返回的是数组)、trim(把空和空格去掉)。

    7.2 处理数字的内建函数

    string、x?string(“0.##”);小数点后几位

    round(四舍五入)、floor(把小数点后去掉)、ceiling;

    7.3 处理list的内建函数

    first(第一个值)、last(最后一个值)、seq_contains(序列是否包含)、seq_index_of(序列位置);

    size、reverse、sort、sort_by(如果List是个对象,则可跟进某个属性进行排序)

    chunk(将List分块处理)

    7.4 其他内建函数

    is函数:is_string、is_number、is_method;判断变量类型;

    ()、has_content函数。

    eval求值。

    string

    number
    list
    other

    8、macro、function指令

    8.1 宏macro、nested、return指令

    macro

    test
    11
    nested

    8.2 函数function、return指令

    function

    tt

  • 相关阅读:
    设计模式-1-概要(c#版)
    UML图示说明
    阿里云SLB双机IIS多站点负载均衡部署笔记
    阿里云分布式关系数据库DRDS笔记
    一些小经验
    NOSQL场景梳理
    内核linux-3.4.2支持dm9000
    构建根文件系统
    u-boot-1.1.6移植之dm9000
    移植u-boot-1.1.6(原创)
  • 原文地址:https://www.cnblogs.com/aixing/p/13327513.html
Copyright © 2020-2023  润新知