java .tpl是什么模版_tpl标签定义

canonical 阅读(996) 评论(0)  编辑  收藏 所属分类: Witrix开发平台

a35bb08398d08359b8e7ce7cb622d92f.png

tpl自定义标签的设计目标之一是尽量减少配置说明项. 在tpl标签库中, 标签定义格式如下

importVars="varA, varB"

otherArgs="optionalArgA, optionalArgB" localScope="trueOrFalse" >

自定义标签的内容, 可以是任何tpl代码

自定义标签名>

标签库名称>

demandArgs中指定调用时必须给定的参数的名称列表,

importVars指定从调用环境中导入的变量的名称列表,otherArgs指定可选参数的名称列表. demandArgs,

importVars和otherArgs这三者的集合包含了所有该自定义标签能够接受的参数. tpl编译器会检查这些调用规则是否被满足.

在运行的时候, 未指定的可选参数会被初始化为null.

在调用时明确的指定的变量值会覆盖importVars导入的变量值. 例如

// 根据importVars设定, 在此标签内varA的值为a

// args设定会覆盖importVars导入的值,因此在标签内部 varA的值为b

// 调用标签完成后, varA的值恢复为a

tpl中的参数声明方式是非常简化的,但是它仍然保留了最关键的信息:变量名称. 而在弱类型的Expresison Language中, 变量类型本来就不重要. 与jsp tag中的标签声明作个对比.

template

edu.thu.web.tags.TemplateTag

JSP

src

true

true

jsp tag这种标签声明方式非常冗长, 提供的有效信息密度很低, 而相对于tpl标签的声明方式所能够提供的附加信息也没有很大的意义. 这种设计上的问题也深深的影响到JSF等派生技术.

localScope参数指定了此自定义标签是否具有局部变量环境, 如果为true(缺省值),

则调用此标签的时候会自动进行变量压栈处理, 在标签内部无法访问参数列表之外的变量, 运行中所产生的临时变量也不会影响到外部环境.

tpl中的变量堆栈与webwork的ValueStack机制是有一些差异的.

webwork2中的ognl语言在访问OgnlValueStack中的对象的时候缺省采用的是一种递归查找机制, 即在当前环境中找不到对象,

则自动查找上一层环境中的变量. tpl中的标签结构可以多重嵌套, 产生非常复杂的结构, 所以缺省情况下tpl标签采用了类似于函数堆栈的设计,

在子标签中的代码一般情况下是无法访问父标签环境中的变量的(除非指定了localScope参数为true).

localScope支持与importVars机制相结合之后, 我们可以实现比OgnlValueStack更加灵活也更加稳健的变量访问策略.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值