初步完成JspTaglib适配

CommonTemplate([url]http://www.commontemplate.org[/url])已初步完成PageContext, BodyContent, JspFragment, JspWriter 等的适配实现,以及Tag, IterationTag, BodyTag, SampleTag 等的适配回调。
(题外话:JspTagLib的接口不太友好,简单的树遍历做了很多绕弯的接口协议)

tld的引入方式也作了相应调整。

最初的想法是在页面上引入tld:

$taglib{"struts.tld"}
$checkbox{name: "allow"}


但在项目中发现,大家并不喜欢为某个页面单独加载tld,
通常会把所有tld放在一个commons.jsp中,然后inclide进来,
即然如此,放到配置中使用会更方便,并且不需要重复加载解析tld,
另外,页面开发者也不应该关注标签的定义。

现在改成将struts2的相关标签的配置放到:
org/commontemplate/tools/web/struts2/commontemplate.properties
使用时只需继承这个配置(参见配置中@extends的使用)。
配置内容如:

directive{checkbox}=org.commontemplate.standard.directive.taglib.TagLineDirectiveAdapter()
directive{checkbox}.tagClass=org.apache.struts2.views.jsp.ui.CheckboxTag

这样就可以在页面直接使用:

$checkbox{name: "allow"}


现在唯一存在问题的是:
在适配PageContext时,需要相关servlet(jsp页面的编译结果引用), request, response等信息,
而在模板上下文是拿不到的,这里需要一个传递机制,并且保证侵入性较小,
已看过FreeMarker的实现,它将request,response作为一个变量放在模板上下文中,然后取出使用。
先暂且也用相似方式实现,但不放入VariableStorage,而放到ObjectStorage中传递。
等想到更好的办法再重构。

此功能完成后将发布新版本。

希望得到更多意见。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值