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。

        

  • 相关阅读:
    hihocoder 1489(微软2017, 数学,模拟)
    图论——迪杰斯特拉算法(Dijkstra)实现,leetcode
    DFS,BFS 练习(深搜,广搜,图,leetcode)
    什么是渗透测试?黑客安全专家郭盛华这样说
    为什么印度容易遭受网络黑客攻击?
    郭盛华年收入5000万是真的吗?
    警方突袭德国间谍软件公司
    苹果推出首款5G手机,相机功能比单反还要牛?
    苹果推出iPhone 12,价格比你想象中更实惠
    韩国AI半导体技术,为何能问鼎世界第一?
  • 原文地址:https://www.cnblogs.com/chengzhipcx/p/5019221.html
Copyright © 2011-2022 走看看