freemaker学习笔记

一、freemarker是一个基于java的模板引擎。是mvc中View视图层的促进。

1.分离表现层和业务逻辑。
2.可以提高开发效率
3.使得开发过程中的人员分工更加明确

二、view解析model数据
1.基本数据取值
String/int/long/double/boolean username   -->  
        ${username!} !代表username为null,不显示

    boolean username=true  -->  
        ${username?String('yes','no')}  转义为yes,no不能显示truefalse

    null 值  ${null!'我是空变量'}

    missing 变量不存在 ${missing!'我是不存在'}

    List<User> userList --> 
        <#list userList as item>${item.name}--${item.birthday?String('yyyy-MM-dd HH:mm:ss')}</list>   
        转义日期,freemaker识别sql包下的Date,不识别util包下的Date,需要转义。
2.变量赋值、运算
<#assign a=100/>
    a = <font color="red">${a}</font><br/>
    a+100 = <font color="red">${a+100}--${a*100}</font><br/>
3.封装对象取值
mav.addObject("userObj",user);
        ${(userObj.brief)!"default_value"}
    html文本原类型输出
        ${(userObj.brief)!?html}
4.集合
List 有序,可重复

    List<String> list --> String
        <#list list as item>${item!}</list>
    List<User> userList --> User对象
        <#list userList as item>${item.name}--${item.birthday?String('yyyy-MM-dd HH:mm:ss')}</list>

    Map 无序,不重复

    <#list map?keys as key>
        <font color="red">${key}:${map[key]}</font></br>
    </#list>
5.if else条件
<#assign var=100/>

    <#if var==99>
        <font color="red">var=99</font>
    </#if>

    <#if var==99>
        <font color="red">var=99</font>
    <#else>
        <font color="red">var!=99</font>
    </#if>

    <#if var &gt; 99>
        <font color="red">var大于99</font>
    <#elseif var==99>
        <font color="red">var=99</font>
    <#else>
        <font color="red">var小于99</font>
    </#if>

    判断是否存在

    <#if list??></#if>

    <#if !( (var=='python'&&var?length==6)|| var='java' )></#if>
6.switch 支持String
<#assign var =11/>

    <#switch var>
        <#case 10>
        <#case 11>
        10 or 11 
        <#break>

        <#case 100>
        100 
        <#break>

        <#default>
        other
    </switch>
7.字符串操作
<#assign a="hello"/>
    <#assign b="world"/>

    连接  ${a + b}
    截取  ${(a + b)?substring(5,8)}  -- wor
    长度   ${(a + b)?length}     
    大写   ${(a + b)?upper_case}     
    小写  ${(a + b)?lower_case}  
    index_of ${(a + b)?index_of('w')}  --5 
    last_index_of ${(a + b)?last_index_of('w')}  --7   
    替换   ${(a + b)?replace('o','xx')}  

    <#assign myList=[2,4,5,6,3,6,4,9,1]/>

    <#list myList?sort?reverse as item> reverse倒叙
        下标${item_index}:值${item}
    </#list>
    ${myList?size}
    ${myList[3]}
三、其他操作
1.自定义函数

实现接口TemplateMethodModelEx,将实现类传入mav.addObject("sort_method",SortMethod);

2.自定义指令

实现接口TemplateDirectiveModel,配置xml文件

3.内建函数
处理字符串 substring,cap_first,ends_with,contains
                date,datetime,time
                starts_with,index_of,last_index_of,split,trim
处理数字      string、x?string("0,##"),round,floor,ceiling
处理list  first last, seq_contains,seq_index_of,size,reverse,sort,sort_by,chunk
其他内建函数 is_string is_number,is_method,eval求值
代码实现

1

2

四、base路径获取
1.spring-mvc.xml
<!-- FreeMarker视图解析 如返回userinfo。。在这里配置后缀名ftl和视图解析器。。 -->
<bean id="viewResolverFtl"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
    <property name="suffix" value=".ftl" />
    <property name="contentType" value="text/html;charset=UTF-8" />
    <property name="exposeRequestAttributes" value="true" />
    <property name="exposeSessionAttributes" value="true" />
    <property name="exposeSpringMacroHelpers" value="true" />
    <property name="requestContextAttribute" value="request" />
    <property name="cache" value="true" />
    <property name="order" value="0" />
</bean>
其中<property name="requestContextAttribute" value="request" />是关键。
ftl页面获取
<#assign base=request.contextPath />
<!DOCTYPE html>
<html lang="zh">
<head>
    <base id="base" href="${base}">
    <title>首页</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link href="${base}/static/bootstrap-3.3.4/css/bootstrap.min.css" rel="stylesheet">
    <script src="${base}/static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
js获取
var base = document.getElementById("base").href;
// 与后台交互
_send = function(async, url, value, success, error) {
    $.ajax({
        async : async,
        url : base + '/' + url,
        contentType : "application/x-www-form-urlencoded; charset=utf-8",
        data : value,
        dataType : 'json',
        type : 'post',
        success : function(data) {
            success(data);
        },
        error : function(data) {
            error(data);
        }
    });
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值