博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
freemarker 整理
阅读量:6831 次
发布时间:2019-06-26

本文共 2675 字,大约阅读时间需要 8 分钟。

  hot3.png

1. 与spring 集成

    
    
    
        
            
1            
utf-8            
zh_CN            
true,false            
yyyy-MM-dd HH:mm:ss            
yyyy-MM-dd            
HH:mm:ss            
0.######            
true            
        
    
    
    
    
    
    

2. 结合sitemesh使用

  1) 在web.xml里加入配置

    
sitemesh
    
com.opensymphony.sitemesh.webapp.SiteMeshFilter
    
sitemesh
    
/*
    
sitemesh-freemarker
    
com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet
    
        
TemplatePath
        
/
    
    
        
default_encoding
        
UTF-8
    
    
2
    
sitemesh-freemarker
    
*.ftl

  2) 修改decorators.xml(必须要在根目录下)

    
    
        
/css/*
        
/images/*
        
/js/*
        
/error
    
    
    
        
*
    

  3) 需要用的jar包

    
opensymphony
    
sitemesh
    
2.4.2

3. freemarker 常见语法

    1)保留两位小数点${orderDetail.price?string("#.##")}

    2)格式化时间${orderDetail.order.createTime?string("yyyy-MM-dd HH:mm:ss")}    

    3) 获取当前时间${.now?date} 返回的是2015-11-11

4. 宏和函数定义和使用

    1)宏

    写法:

    <#macro page url page maskSize=5>
    <#if (number == pages)>

       <li><a href="javascript:void(0);">下一页</a></li>

       <li><a href="javascript:void(0);">尾页</a></li>

        <#else>

            <li><a href="${buildPageUrl(url2,page.pageNum+1,page)}">

                    (注:这个地方可以直接调用宏所在的FTL中的函数)下一页</a>

            </li>   

             <li><a href="${buildPageUrl(url2,page.pages,page)}">尾页</a></li>   

        </#if>

    </#macro>

    引入方式: <#import  "/user/common/macro/page.ftl" as pg >
    调用方式:<@pg.page url="${queryUrl}" page=page  maskSize=10 />   
    2).函数(function)
    写法:
     <#function buildPageUrl url pageNum data>

        <#assign pageUrl = "${url}?pageNum=${pageNum}&pageSize=${data.pageSize}">

        <#return pageUrl/>

    </#function>

    引入方式:<#include "/user/common/macro/date.ftl"/>
    调用方式: ${buildPageUrl(url2,page.pageNum+1,page)}
    3.不同的地方
      1) <#return/> 的用途、引入方式、 调用方式 都不同。
      2) 宏:可以提前返回,比如<#return/> 但是不能<#return 1>, A macro cannot return a value 
                 宏,主要作用是,拼接内容,把宏内部的字符串展示出来,return返回值没有意义。
           函数:与宏的调用方式不同,直接 ${buildPageUrl(url2,page.pageNum+1,page)}执行函数。
                  返回值才是最关键的结果,不是为了显示函数内部的字符串内容。

    补充一点,在宏所在的ftl中,同时定义了函数,宏中可以直接使用这个函数。

     

转载于:https://my.oschina.net/jeeker/blog/536885

你可能感兴趣的文章
Linux 日常管理
查看>>
自己选择的路自己走!
查看>>
cisco 交换机指示灯
查看>>
使用Exchange Server 2010搭建多域名邮件系统
查看>>
Windows Server 2012 VDI并发创建虚拟机
查看>>
centos5.6入门学习002之centos5.6安装
查看>>
centos5.5安装csvn,以及问题处理
查看>>
oracle some/any/all
查看>>
linux下的软件安装方式(rpm,yum,编译安装)
查看>>
手游公司运维之升级zabbix到2.2.3版本
查看>>
虚拟化大拿炮轰Citrix
查看>>
我的友情链接
查看>>
angular的GitHub Repository Directive Example学习
查看>>
更改office 365所有用户登录密码
查看>>
更改访问数据库权限
查看>>
vim 复制文件中多行到另一个文件
查看>>
Ping命令详解及使用小技巧-luoqiangb@dc
查看>>
Python_列表的方法
查看>>
mysql 插入汉字 Incorrect string value 解决办法
查看>>
linux卸载mysql,apache,php
查看>>