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. 慕课网视频

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

持续更新!!!

原文地址:https://www.cnblogs.com/flyinghome/p/12485041.html