zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    NYOJ 10 skiing DFS+DP
    51nod 1270 数组的最大代价
    HDU 4635 Strongly connected
    HDU 4612 Warm up
    POJ 3177 Redundant Paths
    HDU 1629 迷宫城堡
    uva 796
    uva 315
    POJ 3180 The Cow Prom
    POJ 1236 Network of Schools
  • 原文地址:https://www.cnblogs.com/beenupper/p/3355407.html
Copyright © 2011-2022 走看看