`
newspringwork
  • 浏览: 99499 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Freemarker一些常用知识

 
阅读更多

1. Freemarker中的宏,可以看成Java中的方法,语法如下:

定义: 
  <#macro print msg_m=123>
    <h3>测试宏的内容,消息:${msg_m}</h3>
    <#nested>
  </#macro>
调用:
  <@print msg_m="Hello">可有可无的内容</@print>

 (1).其中参数msg_m,由于宏定义时有默认值,调用宏时可以不指定其值;

 (2).<#nested>表示输出调用宏时标签<@print>和</@print>之间的内容,可以重复;

 (3).msg_m参数不是必须定义的,如果定义了,调用时应该指定值或者定义默认值,调用时也不能传没定义的参数;

 (4).结束标识也可写为:</@>

 

2.宏中嵌套的内容(nested模板)也可以接收参数,如下面就是一个遍历宏,给<#nested>的内容传入循环变量和循环索引值:

<#macro loop col>
   <#local max=col?size-1>
   <#list 0..max as idx>
      <#nested col[idx],idx>
   </#list>
</#macro>

调用
<@loop col=master.managers;item,index>
    ${index+1}. ${item}
</@loop>

#list函数也可以取得索引,上面例子只是为了说明如何取得给<#nested>模板传值
<#list master.managers as item>
    ${item_index+1}. ${item}
</#list>

 

3.关于变量

    (1).macro宏中的局部变量使用#local

    (2).普通变量使用#assign

    (3).循环变量如#list users as usr中间的usr

    (4).变量作用域重叠时,作用域小的会覆盖作用域更大的,不过也有特殊,如:要访问数据模型中的msg,页面也定义了一个局部变量msg,那么可以使用${.globals.msg}访问

 

4.命名空间

 定义:

<#inport "/lib/header.ftl" as head>
${head.username}
<#assign username="King" in head>
${head.username}
assign修改的是命名空间中的变量值
 5.list指令遍历集合时,如何取得当前索引
   (1)使用varname_index:
<#list master.managers as item>
	${item_index+1}. ${item}
</#list>
   (2)通过宏,给nested传值方式
   繁琐,麻烦而且是重复画轮子^_^
<#macro loop col>
	<#local max=col?size-1>
	<#list 0..max as idx>
	     <#nested col[idx],idx>
	</#list>
        <#-- 使用return指令 -->
        <#return>
        这句话不会打印
</#macro>
<#-- 调用 -->
<@loop col=master.managers;item,index>
	${index+1}. ${item}
</@loop>
<#-- 或者通过位置参数方式调用 -->
<@loop master.managers;item,index>
	${index+1}. ${item}
</@loop>
  • 自定义函数function
    下面是一个求和自定义函数的例子
<#--自定义函数-->
<#function sum nums...>
   <#local sum_v=0>
   <#list nums as num>
      <#local sum_v=sum_v+num>
   </#list>
   <#return sum_v>
</#function>
<br>-----------------------<br>
求和:${sum(1,23,39)}
<br>-----------------------<br>
 
分享到:
评论
1 楼 qiuq86 2013-04-08  
很有用,谢谢,看到了一些之前没用到过的技巧

相关推荐

    前台开发基础

    常用web开发基础,包括html,js,jquery,freemarker等相关知识点

    eblog:eblog是一个基于Springboot2.1.2开发的博客学习项目,为了让项目融合更多的知识点,达到学习目的,编写了详细的从0到1开发文档。主要学习包括:自定义Freemarker标签,redis的zset结构完成本周热议排行榜,t-io + websocket完成即时消息通知和群聊,rabbitmq + elasticsearch完成博客内容搜索引擎等。值得学习的地方很多!

    项目说明:本博客是学习过程中建造的项目,为了融合更多知识点,让博客看起来更加高大上,使用了多个框架组合,有些也是企业级项目中常用的解决方式。多内容内容的,通常是xss攻击预防等安全方面的。项目结构: e...

    JessMA Java Web 应用开发框架 (v3.2.2-20130815).pdf

    本开发手册会详细阐述如何在JessMA中整合FreeMarker、Velocity、UrlRewrite、EHCache-Web、Spring、Hibernate和MyBaits等常用框架和组件。 4) 高性能:性能要求是JessMA的硬性指标,从每个模块的设计到每行代码的...

    Struts2入门教程(全新完整版)

    十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...

    javajdk源码学习-JavaSourceLern:JDK源码学习

    本博客是学习过程中搭建的项目,为了融合更多知识点,让博客看起来更加高大上,使用了多个框架组合,有些也是企业级项目中常用的解决方式。不够说实话,还有挺多内容缺少的,比如xss攻击预防等安全方面的。 项目结构...

    Struts2 in action中文版

    8.3.2 FreemarkerResult,也叫做freemarker 191 8.4 全局结果 192 8.5 小结 193 第四部分 完善应用程序 第9章 集成Spring和Hibernate/JPA 196 9.1 为什么在Struts 2中使用Spring 196 9.1.1 依赖注入能做些什么 197 ...

    SpringBoot

    本课程从springboot演变开始讲解。内容包括基础配置、常用注解、过滤器、模板、数据库ORM集成、等全方位知识。 学员可以由浅入深的全方位学习。

    java开源包1

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包11

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包2

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包3

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包6

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包5

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包10

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包4

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包8

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包7

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包9

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包101

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    Java资源包01

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

Global site tag (gtag.js) - Google Analytics