zoukankan      html  css  js  c++  java
  • freemarker的学习(二)(用法总结 初级+中级)

    注意:后台代码和前台代码以及效果都是一一对应的,可以对照着看。并且多注意一下代码中的备注。

    初级用法

    初级用法:int long double boolean String 为空处理 时间处理 用法

    后台代码

        @RequestMapping("/index")
        public String toIndex(Model model){
            model.addAttribute("inttype",100);
            model.addAttribute("longtype",10000L);
            model.addAttribute("doubletype",1.23d);
            model.addAttribute("booleantype","yes");
            model.addAttribute("booleantype2",true);
            model.addAttribute("name","张三");
            model.addAttribute("defaultnamenull",null);
            model.addAttribute("time",new Date());//这里的Date是java.util包下的而不是java.sql的
            model.addAttribute("time2",new java.sql.Date(new Date().getTime()));//这里的Date是java.sql的
            return "index";      
        }

    前台代码

    <#--获取int类型值的方法:${} -->
    <h3>int类型:${inttype}</h3>
    
    <#--获取long类型值的方法:${} -->
    <h3>long类型:${longtype}</h3>
    
    <#--获取double类型值的方法:${} -->
    <h3>double类型:${doubletype}</h3>
    
    <#--获取boolean类型值的方法:${} 这里要注意freemarker不支持布尔型,可以将后台的true false改成yes no-->
    <h3>boolean类型第一种处理方法:${booleantype}</h3>
    
    <#--获取boolean类型值的方法:${} 这里要注意freemarker不支持布尔型,也可以使用下面的方法来处理-->
    <h3>boolean类型第二种处理方法:${booleantype2?string('yes','no')}</h3>
    
    <#--获取String类型值的方法:${} -->
    <h3>String类型:${name}</h3>
    
    <#--获取String类型空值的方法:${!}  对于后台没有赋值的如果不使用! 会报错 -->
    <h3>String类型空值处理办法1:${namenull!}</h3>
    
    <#--获取String类型空值的方法:${!}  对于后台没有赋值的如果不使用! 会报错 可以给一个默认值 -->
    <h3>String类型空值处理方法2:${defaultnamenull!'我是默认值'}</h3>
    
    <#--获取时间类型值得方法:需要使用  ?string?() 来给定一个时间格式 -->
    <h3>时间类型处理方法1:${time?string('yyyy-MM-dd')}</h3>
    
    <#--获取时间类型值得方法:需要使用  ?string?() 来给定一个时间格式 -->
    <h3>时间类型处理方法2:${time2?string('yyyy-MM-dd HH:mm:ss')}</h3>

     效果

    中级用法

    中级用法:list assign 对象类型 富文本 map  if switch用法

    后台代码

        @RequestMapping("/index")
        public String toIndex(Model model){
            model.addAttribute("userlist",this.getUserList());
            t_user user = new t_user();
            user.setName("李四");
            model.addAttribute("userObj",user);
            t_user user1 = new t_user();
            user1.setName("<font color='red'>富文本</font>");
            model.addAttribute("user1",user1);
            Map<String,String> map = new HashMap<String,String>();
            map.put("键1","值1");
            map.put("键2","值2");
            map.put("键3","值3");
            model.addAttribute("amap",map);
            return "index";
        }
    
        public List<t_user> getUserList(){
            List<t_user> list = new ArrayList<t_user>();
            for(int i=0;i<3;i++){
                t_user user = new t_user();
                user.setName("用户"+i);
                list.add(user);
            }
            return list;
        }

    前台代码

    <ul>
        <#--#list语法的用法-->
        <#--  对应后台的model.addAttribute("userlist",this.getUserList());代码-->
        <h3>list循环遍历用法</h3>
        <#list userlist as item>
            <li>${item.name}</li>
        </#list>
    
        <#-- assign语法 用于赋值和计算 -->
        <h3>assign赋值运算用法</h3>
        <#assign a=120/>
        a = <font color="red">${a}</font><br/>
        a+100 = <font color="red">${a+100}</font><br/>
        a*100 = <font color="red">${a*100}</font>
    
        <#--对象类型的处理-->
        <#--这里要注意 如果后台设置userObj这个对象的话,那么前台会报错, ${userObj.name!} 这种写法也是错误的 因为叹号默认是取离它最近的名称name而不是userObj.name-->
        <#--所以正确写法为:${(userObj.name)!}  也就是用括号括起来-->
        <#--当然也可以设置默认值 写法为:${(userObj.name)!'我是默认值2'} 要注意 我是默认值2两边的单引号也可以用双引号来代替 freemarker不区分单引号和双引号-->
        <h3>对象类型的处理</h3>
        <font color="red">${userObj.name}</font><br/>
    
        <#--富文本处理方式1-->
        <h3>富文本处理方式1</h3>
        ${user1.name}<br/>
    
        <#--富文本处理方式2 原样输出-->
        <h3>富文本处理方式2 原样输出</h3>
        ${(user1.name)!?html}<br/>
    
        <#--map的处理方式 要使用list标签的方法-->
        <h3>map的处理方式 要使用list标签的方法</h3>
        <#list amap?keys as key>
            key:${key}    value:${amap[key]}  <br/>
        </#list>
    
        <#--if语法-->
        <h3>if语法处理方式1</h3>
        <#assign a = 3/>
        <#if a == 3>
            <font color="red">a = 3</font>
        </#if>
    
        <h3>if语法处理方式2</h3>
        <#assign b = 3/>
        <#if b &gt; 2> <#--  &gt; 意思为大于 转义  -->
            <font color="red">b > 2</font>
        <#elseif b == 2>
            <font color="red">b = 2</font>
        <#else>
            <font color="red">b < 2</font>
        </#if>
    
        <h3>if语法处理方式3</h3>
        <#--两个问号代表判断这个变量/list等是否存在,如果存在才会执行里面的代码-->
        <#--两个问号可以用?exists来代替  写法为  myList?? == myList?exists   -->
        <#if myList??><#--不存在 所以无输出-->
            <#list myList as item>
                ${item.name}
            </#list>
        </#if>
        <#if userlist??><#--存在 所以有输出-->
            <#list userlist as item>
                ${item.name}
            </#list>
        </#if>
    
        <#--if语法处理方式4   多条件 ||  &&  !-->
        <h3>if语法处理方式4   多条件 ||  &&  !</h3>
        <#assign var = 'ok'>
        <#if var == 'ok' || var == 'ok1'>
            <font color="red">ok</font>
        <#else>
            <font color="red">noOk</font>
        </#if>
    
        <#--switch语法处理方式 switch case break default-->
        <h3>switch语法处理方式 switch case break default</h3>
        <#assign c = 11/>
        <#switch c>
            <#case 10><#--  如果c=10或者11也就是case10和case11 都会输出 值1  -->
            <#case 11>
            值1<br/>
            <#break><#--这里要用break标签结束-->
    
            <#case 100>
            值2<br/>
            <#break>
    
            <#default><#--default默认放在最后 意思是如果上面的条件不满足 就执行这里的-->
            值3
            <#break><#--这个break可以省略-->
    
        </#switch>
        
    </ul>

    效果

    参考:

    1. 慕课网视频

    本文章只用于个人学习总结,如有侵权,联系必删!

    持续更新!!!

  • 相关阅读:
    LeetCode0350.两个数组的交集 II
    LeetCode0055.跳跃游戏
    LeetCode0739.每日温度
    LeetCode面试题46.把数字翻译成字符串
    LeetCode0128.最长连续序列
    LeetCode面试题29.顺时针打印矩阵
    LeetCode0238.除自身以外数组的乘积
    2020软件工程最后一次作业
    如何防止XSS攻击
    需求规格说明书
  • 原文地址:https://www.cnblogs.com/flyinghome/p/12485041.html
Copyright © 2011-2022 走看看