• freemarker教程


    语法以及常用函数,注意事项都有很详细的讲解,收藏了。

    http://www.blogjava.net/176142998/archive/2010/07/03/325159.html

    以下为学习和测试的数据。

    主要学习了:

    freemarker的数据类型sequences(可理解为数组), hashes(可理解为对象) 的值遍历与访问,以及相应的内建函数

    字符串的常用内建函数

    macro宏定义

    freemarker中request,session,application作用域的值及顺序,请求参数的获取。

    freemarker中获取cookies的值???? 这个测试失败了,还没找到答案

    @Controller
    public class MessageController {
    
    	@RequestMapping("/ftl")
    	public String showMsg(HttpServletRequest req,Model m){
    		m.addAttribute("name", "hello freemarker in request");//request作用域name设值
    		
    		ArrayList<String> userNames = new ArrayList<>(); //request作用于设置一个list集合,在freemarker中遍历
    		
    		userNames.add("zhangsan");
    		userNames.add("lisi");
    		userNames.add("wangwu");
    		m.addAttribute("userNames",userNames);
    		
    		String[] stuNames = {"st1","st2","st3"};
    		String[] stuNames2 = {"st221","st222","st223"};
    		
    		req.setAttribute("stuNames", stuNames2);
    		
    		req.getServletContext().setAttribute("stuNames", stuNames);  //application作用于设置一个list集合,在freemarker中遍历
    		req.getServletContext().setAttribute("name", "hello freemarker in application");  //application作用域name设值
    		
    		
    		return "index";
    	}
    	
    }
    

    index.ftl  用于freemarker模板测试

    ${name}   打印request中的name。 由于application中也有name,默认寻找顺序为freemarker 数据中 --> request --> session --->application<br/>
    
    ----------------------<br/>
    <#list userNames as name>    
    <font color="red"> ${name} </font><br/>
    </#list>
    
    ----------------------<br/>
    <#list stuNames as name>
    <font color="green"> ${name} </font><br/>
    </#list>
    
    --------------------<br/>
    字符串: ${"abc"+"def"}  <br/>
    数字: ${18} <br/>
    
    布尔型:
    <#if true>
    hello true world  <br/>
    </#if>
    
    序列:
    <#list <#--["china",3.0,"japen","asia"]-->   1..5 as item>
    ${item}&nbsp;
    </#list>
    
    
    <br/>---------------------------------<br/>
    序列的链接操作
    <#list <#--["e"] + ["a","b","c"]--> (1..5) + (6..9) as item>
    ${item}&nbsp
    </#list>
    
    <br/>-----------------------------<br/>
    字符序列:<#assign user="china"/>
    ${r"${user[2]} "} = ${user[2]}  <br/>
    
    ${r"${user[1..5]}"}= ${user[1..4]} <br/>
    
    
    ------------------------------<br/>
    数组的长度=
    <#assign user2=["china","usa"]/>
    ${user2?size}<br/>
    
    <br/>-------------------------------------------<br/>
    算数操作符: ${1/3}<br/>
    ${1+"5"} 合并为了字符串,这是字符串连接符的加号<br/>
    
    
    ------------------------------<br/>
    format:
    <#setting number_format="currency"/>
    <#assign answer=43/>
    ${answer?string.number}<br/>
    ${answer?string.percent}<br/>
    
    
    -------------<br/>
    <#assign myBol = false/>
    ${myBol?string("ok","no")}
    
    ----------------------<br/>
    <#assign numberToStr = 4/>
    #{numberToStr;m2}<br/>
    
    --------------------------<br/>
    Macro directivename<br/>
    
    <#macro greet>
    <font size="+2">hello joe!</font>
    </#macro>
    invoke= <@greet/>
    
    <br/>
    Macro parameters<br/>
    <#macro greet person>
    <font size="+2">${person}</font>
    </#macro>
    
    <@greet person="fred"/>  and <@greet person=1/> <br/>
    
    Macro parameters Default Values<br/>
    <#macro happy person="joe" age=18>
    <font size="+2">${person}</font>&nbsp age=${age}
    </#macro>
    
    invoke= <@happy person="lisi"/>
    <br/>
    
    
    <#macro do_thrice>
      <#nested>
      <#nested>
      <#nested>
    </#macro>
    <@do_thrice>
      Anything.
    </@do_thrice>  
    
    
    
    <#setting number_format="#"/>
    <br/>-----------------------------------<br/>
    内建函数:<br/>
    转大写=${"abc"?upper_case}<br/>
    转html=${"abc<br/>"?html}<br/>
    首字母大写=${"abc"?cap_first}<br/>
    带空格 =${" abc efd"}<br/>
    去除空格 =${" abc efd"?trim}<br/>
    获取序列的长度=${"abcdef"}  必须是序列,不能是字符串,但字符串可以像序列那样用索引访问字符<br/>
    获取字符串得字符=${"abcdef"[2]}<br/>
    
    sequences内建函数<br/>
    <#assign myArr = 1..10/>
    first = ${myArr?first}<br/>
    last = ${myArr?last}<br/>
    reverse = 
    <#list myArr?reverse as i>
    ${i}&nbsp;
    </#list>
    
    <br/>Hashes内建函数<br/>
    <#assign myList=[{"name":"zk","age":18},{"name":"lisi","age":22}]/>
    <#list myList as obj>
    <!--${obj.name}<br/>-->
    <#list obj?keys as key>
     ${obj[key]}&nbsp;
    </#list>
    </#list>
    
    
    <br/>---------------------<br/>
    判断对象是否存在:
    <#if ! name22?exists>
    name22对象不存在!<br/>
    <#else>
    ${name22?exists?string("yes existes","no")}<br/>
    </#if>
    -----------------<br/>
    <#--<#assign mouse="zq"/>-->
    if_exists=
    ${mouse?if_exists}  <br/>
    
    默认值:
    ${z_name?default("zkkk")} 如果该变量为null则设置。 为空字符串不会设置。<br/>
    
    
    --------------------------<br/>
    split<br/>
    <#list "hello,china,usa,"?split(",") as item>
    ${item}<br/>
    </#list>
    -------------<br/>
    获取字符串长度
    ${"abc"?length} <br/>
    
    ---------------------<br/>
    request中的name =  ${Request ["name"]} <br/>
    session中的name =  ${Application ["name"]} <br/>
    获取请求参数RequestParameters =  ${RequestParameters["mouse"]} <br/>

    带请求参数访问 http://localhost:8080/Freemark/ftl?mouse=hahahahhahahahahahah

    输出为:

    hello freemarker in request 打印request中的name。 由于application中也有name,默认寻找顺序为freemarker 数据中 --> request --> session --->application
    ----------------------
    zhangsan
    lisi
    wangwu
    ----------------------
    st221
    st222
    st223
    --------------------
    字符串: abcdef
    数字: 18
    布尔型: hello true world
    序列: 1  2  3  4  5 
    ---------------------------------
    序列的链接操作 1  2  3  4  5  6  7  8  9 
    -----------------------------
    字符序列: ${user[2]} = i
    ${user[1..5]}= hina
    ------------------------------
    数组的长度= 2

    -------------------------------------------
    算数操作符: 0.33
    15
    ------------------------------
    format: 43
    4,300%
    -------------
    no ----------------------
    4.00
    --------------------------
    Macro directivename
    invoke= hello joe!
    Macro parameters
    fred and ¥1.00
    Macro parameters Default Values
    invoke= lisi  age=¥18.00
    Anything. Anything. Anything.
    -----------------------------------
    内建函数:
    转大写=ABC
    转html=abc<br/>
    首字母大写=Abc
    带空格 = abc efd
    去除空格 =abc efd
    获取序列的长度=abcdef 必须是序列,不能是字符串,但字符串可以像序列那样用索引访问字符
    获取字符串得字符=c
    sequences内建函数
    first = 1
    last = 10
    reverse = 10  9  8  7  6  5  4  3  2  1 
    Hashes内建函数
    zk  18  lisi  22 
    ---------------------
    判断对象是否存在: name22对象不存在!
    -----------------
    if_exists=
    默认值: zkkk 如果该变量为null则设置。 为空字符串不会设置。
    --------------------------
    split
    hello
    china
    usa

    -------------
    获取字符串长度 3
    ---------------------
    request中的name = hello freemarker in request
    session中的name = hello freemarker in application
    获取请求参数RequestParameters = hahahahhahahahahahah

  • 相关阅读:
    Java三年经验
    系统集成项目管理 - 笔记
    ZK
    older versions of the JRE and JDK
    [提高组集训2021] 古老的序列问题
    CF1556G Gates to Another World
    Codeforces Round #743 (Div. 1)
    [提高组集训2021] 蚂蚁
    [LOJ 6669] Nauuo and Binary Tree
    [ABC219H] Candles
  • 原文地址:https://www.cnblogs.com/beenupper/p/3355407.html
Copyright © 2020-2023  润新知