FreeMarker自定义指令

2012-12-05|来源: 黄奕能

FreeMarker自定义指令就像struts2的set标签,为了好理解,也可以认为是定义一个方法,就像js的function.在freemarker中的这个标签就是macro。在定义一个指令的时候,可以指定参数,当然也可以不指定,这里要注意了,我这里只贴出模板文件及输出结果,freemarker的工具类请参照FreeMarker入门教程,其实也没有什么改变,直接拿过来用即可


自定义一个不带参数的指令

<#macro hello>

   helloworld

</#macro>

<@hello/>

helloworld

自定义一个带参数的指令

如果指令带有参数,在用这个指令的时候,参数名是不能省略的,要不会出异常

<#--对于hello这个自定义指令而言,hello后的都是参数,有两个参数一个是num一个是ok-->

<#macro hello numok>

   <#list  1..num as n>

       <h1>Hello${ok}${n}</h1>

   </#list>

</#macro>

<#--<@hello/>会报错,因为hello有两个参数,在定义参数的值的时候参数名不能省略-->

<@hello num=3 ok="World"/>

<h1>HelloWorld1</h1>

<h1>HelloWorld2</h1>

<h1>HelloWorld3</h1>

自定义指令的同时给参数定义了初始值,此时在调用该指令就可以省略参数,如果省略会使用默认值

<#--repeat的两个参数定义了初始值,此时在调用该指令就可以省略参数,如果省略会使用默认值-->

<#macro repeat num=10 ok="World">

   <#list  1..num as n>

       <h1>Hello${ok}${n}</h1>

   </#list>

</#macro>

<@repeat/>

<h1>HelloWorld1</h1>

<h1>HelloWorld2</h1>

nested标签会输出指令中的内容

<#macro test>

   <#--nested会输出指令中的内容-->

   <#nested  12 33/>

   <#nested  11 22/>

   <#nested  22 33/>

</#macro>

<@test;x,y>

   <h1>你好啊--${x}--${y}</h1>

</@test>

<h1>你好啊--12--33</h1>

<h1>你好啊--11--22</h1>

<h1>你好啊--22--33</h1>


本文链接:FreeMarker自定义指令,本文由huangyineng原创,转载请注明出处

相关问答

更多

自定义标签怎么写的啊?

(1) 编写JSP,在JSP中使用自定义标签。 (2) 在web.xml中指定JSP中使用的标签的.tld(标签库描述文件)文件的位置。 (3) .tld文件中指定标签使用的类。 3. 自定义标签的分类: (1) 简单标签:如< mytag:helloworld/> (2) 带属性标签:如<imytag:checkinput dbname = “<myBean.getDBName()>”/> (3) 带标签体的标签: 在自定义标签的起始和结束标签之间的部分为标签体(Body)。Body的内容可以是 ...

Java ,自定义注解怎么使用

java中自定义注解的使用方法: 首先声明一个接口,并未它添加注解内容! package testAnnotation; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Documented @Retention(RetentionPolicy.RUNTIME) public @interface ...

mysql 怎么创建自定义函数

DELIMITER $$ DROP FUNCTION IF EXISTS `sp_test`.`getdate`$$ CREATE FUNCTION `sp_test`.`getdate`(gdate datetime) RETURNS varchar(255) BEGIN DECLARE x VARCHAR(255) DEFAULT ''; SET x= date_format(gdate,'%Y年%m月%d日%h时%i分%s秒'); RETURN x; END $$ DELIMITER ;

在SQL中怎样调用自定义函数?

在select后跟你的自定义函数就可以。 mysql中用select调用自带的now()函数: mysql> select now(); 然后mysql就会返回当前的时间。

Java进阶:编写自定义的 Velocity 指令

Struts、Hibernate、Spring1、JDBC(Java Database Connectivity)提供连接各种关系数据库的统一接口,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具&#47;数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。 2、EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平 ...

专题教程

JAVA概述
第一部分:java入门基础
第二部分:java常用类
第三部分:jdbc系列教程
第四部分:java高级特征
Gson教程
快速了解 jdk8 新特征

相关文章

更多

最近更新

更多