zoukankan      html  css  js  c++  java
  • Java模版引擎之Freemarker

    博客已迁移到CSDN《https://blog.csdn.net/qq_33375499

    Java模版引擎之Freemarker

    freemarker是一款模版引擎,是一种基于模版生成静态文件的通用工具,它是为Java程序员提供的一个类库,它不是面向最终用户的,而是为程序员提供了一款可以嵌入他们开发产品的应用程序。

     1. 插值

      1.1 常用${var}语法进行取值

      1.2 null、不存在对象取值${var!’设置默认值’}

      1.3 取包装对象的值,通过“点”语法:${user.name}

      1.4 取值的时候进行计算、赋值:

        <#assign str=’我是自定义值’ />

        <span>${‘输出:’ + str}</span>

      1.5 Date类型格式${date?String(yyyy-MM-dd‘’)}

      1.6 转义HTML内容:${var?html}

    2. 逻辑指定:ifswitch

    2.1 if

    <#if var == ‘str1’>
        var = ‘str1’
    <#else>
       var != ‘str1’
    </#if>

     

    <#if var ==  ‘str1’>
        var = ‘str1’
    <#elseif var ==  ’str2’>
        var != ‘str2’
    <#else>
        var != ‘str1’
    </#if>

      用<#if var??><#if>  <#if var?exite><#if>  判断变量是否存在

    2.2 switch

    <#switch var>
        <#case 1>
            case1
            <#break>
        <default>
            other
    </#switch>    

    3. 集合遍历

      3.1 list遍历

        <#list myList as item>

          下标:${item_index}

          值:${item}

        </#list>

      3.2 map遍历

        <#list myMap?keys as key>

          ${key} : ${map[key]}

        </#list>

    4. string基本操作指令

      ${str?substring(5,8)}:截取,取头不取尾

      ${str?length}:获取长度

      ${str?upper_case}:全部转为大写

      ${str?lower_case}:全部转为小写

      ${str?index_of(‘xx’)}:查找子串第一次出现的位置

      ${str?last_index_of(‘xx’)}:查找子串最后一次出现的位置

      ${str?replace(‘a’,’xx’)}:替换

    5. 自定义函数(继承TemplateMethodModelEx接口)

      5.1 创建自定义函数类

    public class TemplateMethd implements TemplateMethodModelEx {
        @Override
        public Object exec(List list) throws TemplateModelException {
            // 获取参数
            SimpleSequence simpleSequence = (SimpleSequence) list.get(0);
            List<BigDecimal> list1 = simpleSequence.toList();
            Collections.sort(list1, (a, b) -> { return a.intValue() - b.intValue(); });
            return list1;
        }
    }

      5.2 将自定义函数对象传到模版中

    modelAndView.setViewName("index");
    modelAndView.addObject("sort_int_list", new TemplateMethd());
    return modelAndView;

      5.3 在模版中使用

    <#assign myList=[1,4,5,2,3,7,5,9,0] />
    <#list sort_int_list(myList) as item>
        ${item},
    </#list>

    6. List的指令

      6.1 排序

        <#list myList?sort as item>

          ${item_index} : ${item}

        </#list>

      6.2 反转

        <#list myList?reverse as item>

          ${item_index} : ${item}

        </#list>

      6.3 长度

        ${myList.size}

    7. Freemarker内建函数

      7.1 处理字符串内建函数

        substring:字符串截取

        cap_first:首字母大写

        starts_with:是否以子串开始

        ends_with:是否以子串结尾

        index_of:查找子串第一次出现下标

        last_index_of:查找子串最后一次出现下标

        split:分隔字符串

        trim:去首位空格

        contains:是否包含子串

        date/datetime/time:字符串转换为日期格式

      7.2 处理数字的内建函数

        string:转为字符串

        x?string(“0.##”):转为小数点

        round:四舍五入

        floor:四舍五入

        ceiling:四舍五入进一

      7.3 处理List的内建函数

        first/list:取第一个/最后一个值

        seq_contains:序列是否包含该值

        seq_index_of:该值在list中第一次出现的下标

        size/reverse/sort/sort_by:大小/反转/排序/list中为一个对象,可以根据某个属性进行排序

        chunk(num):把list进行分块处理,每num为一块  

      7.4 其他内建函数

        is函数:is_string/is_number/is_method(判断是否为string/number/method

        has_content函数:判断一个对象是否是null、不存在

    8. Function指令

    <#function doAdd param1 param2>
    
    <@return param1 + param2 />
    
    </@function>
    
    调用: ${doAdd(5, 6)}
  • 相关阅读:
    【leetcode】1215.Stepping Numbers
    【leetcode】1214.Two Sum BSTs
    【leetcode】1213.Intersection of Three Sorted Arrays
    【leetcode】1210. Minimum Moves to Reach Target with Rotations
    【leetcode】1209. Remove All Adjacent Duplicates in String II
    【leetcode】1208. Get Equal Substrings Within Budget
    【leetcode】1207. Unique Number of Occurrences
    【leetcode】689. Maximum Sum of 3 Non-Overlapping Subarrays
    【leetcode】LCP 3. Programmable Robot
    【leetcode】LCP 1. Guess Numbers
  • 原文地址:https://www.cnblogs.com/www-123456/p/11147706.html
Copyright © 2011-2022 走看看