FreeMarker基本用法

FreeMarker基本用法 -2

1.FreeMarker 数据类型

1.1 布尔类型
不能直接输出,需要转换成字符串
输出形式:
    1. ?c
    2. ?string 或 ?string("为true显示的值","为false现实的值")
1.2 日期类型
不能直接输出,需要转换成字符串
1. ?date            年月日
2. ?time            时分秒
3. ?datetime        年与日时分秒
4. ?string(pattern) 自定义格式
	   y   年
	   M   月
	   d   日
	   H   时
	   m   分
  	   s   秒
1.3 数值类型
可以直接输出,也可以转换成指定格式的字符串
1. ?c   普通字符串
2. ?string.currency 货币类型字符串
3. ?string.percent  百分比类型字符串
4. ?string["0.##"]  保留浮点型数值的指定小数位(一个#代表一个小数位,四舍五入)
1.4 字符串类型
可以直接输出
提供内置函数:
    1. 截取字符串(左闭右开) ?substring(start,end)
    2. 首字母小写输出  ?uncap_first
    3. 首字母大写输出  ?cap_first
    4. 字母转小写输出  ?lower_case
    5. 字母转大写输出  ?upper_case
    6. 获取字符串长度  ?length
    7. 是否以指定字符开头(boolean类型) ?starts_with("xx")?string
    8. 是否以指定字符结尾(boolean类型) ?ends_with("xx")?string
    9. 获取指定字符的索引  ?index_ofS("xx")
    10. 去除字符串前后空格 ?trim
    11. 替换指定字符串  ?replace("xx","xx")
1.5 序列类型
 通过list指令输出序列
     <#list 序列名 as 元素名>
         ${名称}
     </#list>
 获取序列的长度        ${序列名?size}
 获取序列元素的下标     ${元素名?index}
 获取第一个元素        ${序列名?first}
 获取最后一个元素      ${序列名?last}

 倒序输出    	 序列名?reverse
 升序输出    	 序列名?sort
 降序输出    	 序列名?sort?reverse
 指定字段名排序    序列名?sort_by("字段名")
    注:一般是JavaBean集合,对应的字段名需要提供get方法
-->
1.6 哈希类型
  key遍历输出
     <#list hash?keys as key>
         ${key} -- ${hash[key]}
     </#list>
  value遍历输出
     <#list hash?values as value>
         ${value}
     </#list>
1.7 FreeMarker不支持null值
FreeMarker 提供两个运算符来避免空值:

​		① !  :指定缺失变量的默认值

​			${value!}:如果value值为空,则默认值是空字符串

​			${value!"默认值"}:如果value值为空,则默认值是字符串"默认值"

​		② ?? :判断变量是否存在

​			如果变量存在,返回 true,否则返回 false

​			${(value??)?string}
<#-- !  :指定缺失变量的默认值  -->
<#--${str}-->
${str!} <br>
${str!"这是默认值"}<br>
${msg!"这是默认值"}<br>

<#-- ?? :判断变量是否存在 -->
${(str??)?c} <br>
${(msg??)?c}
1.8 数据类型代码实现

servlet类

        /**
         * 布尔类型
         */
        req.setAttribute("flag", true);

        /**
         * 日期类型
         */
        req.setAttribute("date", new Date());

        /**
         * 数值类型
         */
        req.setAttribute("age",18); // 数值型
        req.setAttribute("salary",10000); // 数值型
        req.setAttribute("avg",0.545); // 浮点型

        /**
         * 字符串类型
         */
        req.setAttribute("msg","Hello ");
        req.setAttribute("msg2","freemarker");

        /**
         * 序列类型
         */
        // 数组操作
        String[] stars = new String[]{
   "周杰伦","林俊杰","陈奕迅","五月天"};
        req.setAttribute("stars",stars);

        // List操作
        List<String> citys = Arrays.asList("上海","北京","杭州","深圳");
        req.setAttribute("cityList",citys);

        // JavaBean集合
        List<User> userList = new ArrayList<>();
        userList.add(new User(1,"zhangsan",
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值