zoukankan      html  css  js  c++  java
  • Freemaker的了解

    freemarket 模板技术

    与web容器没什么关系

    可以用struct2作为视图组件

     

    第一步导入jar包

    项目目录下建立一个templates目录

    在此目录下建立一个模板文件a.ftl文件

     

    Java代码

    创建实例 –创建模板目录—创建数据模型(树状的)--加载模板文件--- 生成数据(需要一个输出流)

     

    import java.io.File;

    import java.io.OutputStreamWriter;

    import java.io.Writer;

    import java.util.HashMap;

    import java.util.Map;

     

    import freemarker.template.Configuration;

    import freemarker.template.Template;

     

    public class Test_two {

        public static void main(String[] args) throws Exception {

            //创建freemarker配置实例

            Configuration cfg=new Configuration();

            //创建模板目录

            cfg.setDirectoryForTemplateLoading(new File("templates"));

            

            //创建数据模型

            Map root=new HashMap();

            root.put("user", "老程");

            //加载模板文件

            Template t1=cfg.getTemplate("a.ftl");

            

            //显示生成的数据//map里的数据和模板合并到一起

            Writer out=new OutputStreamWriter(System.out);

            t1.process(root, out);

            out.flush();

            out.close();

            

            

        }

    }

    <#if user=="老高">我们的老师</#if>

    数据类型

    Gt大于

    Gte大于等于

    遍历集合

    <#list lst as dizi>

    <b>${dizhi..}</b><br/>

    </#list>

    包含指令

    <#include "filename"/>

    定义宏指令

    <#macro ml>

        <b>aaabb</b>

        <b>aaabb</b>

    </#macro>

    调用宏:<@ml />

    也可传递参数,并对带参数操作

     

    Nested指令

    <#macro border >

    <table border=4 cellspacing=0 cellpadding=4><tr><td>

    <#nested>

    </td></tr></table>

    </#macro>

    <@border > 表格中的内容</@border>

    <#assign mail="111.cpm">定义变量的

    命名空间

    <#improt "filename" as bb/>

    可以通过 in bb 给bb里的东西赋值

     

    时间对象的格式化

    ${date?string("yyyy-MM-dd HH:mm:ss")}

     

    FreeMarker提供两个运算符来避免空值:
    1. !: 指定缺失变量的默认值;
    2. ??:判断变量是否存在。
    !运算符有两种用法:variable!或variable!defaultValue。第一种用法不给变量指定默认值,表明默认值是空字符串、长度为0的集合、或长度为0的Map对象。
    使用!运算符指定默认值并不要求默认值的类型和变量类型相同。

    测试空值处理:

    <#-- ${sss} 没有定义这个变量,会报异常! -->

    ${sss!} <#--没有定义这个变量,默认值是空字符串! -->

    ${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc -->

     

        ??运算符返回布尔值,如:variable??,如果变量存在,返回true,否则返回false。

        

  • 相关阅读:
    【leetcode】Climbing Stairs (easy)
    【leetcode】Best Time to Buy and Sell 3 (hard) 自己做出来了 但别人的更好
    【leetcode】Best Time to Buy and Sell 2(too easy)
    【leetcode】Best Time to Buy and Sell (easy)
    【leetcode】Single Number II (medium) ★ 自己没做出来....
    【leetcode】Single Number (Medium) ☆
    【leetcode】Valid Sudoku (easy)
    【leetcode】Two Sum (easy)
    Oracle-11-主键约束
    Codeforces444A_DZY Loves Physics
  • 原文地址:https://www.cnblogs.com/chengzhipcx/p/5019221.html
Copyright © 2011-2022 走看看