`
javatar
  • 浏览: 1701086 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

CommonTemplate0.8.0发布

    博客分类:
  • HTTL
阅读更多
在元旦之夜发布了0.8.0
http://www.commontemplate.org

增加了与struts及struts2的集成sample, (见下载列表中的commomtemplate-sample-0.8.0.zip)


将宏指令的特殊前缀语法去掉, 改成命名约定:

受FreeMarker影响, 它使用仿XML的:
<@mymacro/>
<@mymacro>...</@mymacro>

使自定义宏可以用行指令及块指令两种方式调用,
当以块指令调用时, 可以用<#nest>回调内部块,
(注:<#include>等内置行指令不需要/>结尾)

基于同样的思路, CommonTemplate采用了:
$-mymacro{xxx}
$+mymacro{xxx}...$end

减号前缀表示行指令调用, 加号前缀表示块指令调用,相当于引入了特殊语法.

这是因为指令的解析在编译期就要决定是行指令还是块指令,
而宏的定义在运行期才能获取. 所以需要标识告诉引擎怎么解析.

然而, 思索良久发现, 一个宏要不就是行指令, 要不就是块指令,
很少把一个行指令用块指令调用,或把一个块指令用行指令调用,
如:
$macro{"mybutton"}
<input type="button" value="${name}" />
$end

这个宏肯定会用行指令调用,而
$macro{"mytable"}
<table>
    $inner (注:相当于freemarker的nested)
</table>
$end

这个宏肯定会以块指令调用, 因为它用了inner回调,
也就是说,是行指令,还是块指令,应该在宏定义时就已经决定了,而不是在调用时决定,

所以决定采用命名规则判断是否为块指令(规则可配置)
默认规则为:
以"_block"结尾的宏指令为块指令,如:
$macro{"mytable_block"}
<table>
    $inner
</table>
$end


调用方式与普通指令一模一样, 也就是无特殊语法:
块指令调用:
$mytable_block
    <tr><td></td></tr>
$end

行指令调用:
$mybutton{name: "Query"}


这样,是行指令,还是块指令,在定义时就决定了,也便于理解,
而引擎可以通过匹配命名规则来解析指令树.
分享到:
评论
3 楼 javatar 2008-01-04  
xyh 写道
支持struts2的标签么?


struts2的逻辑标签就不需要引入了(CT的指令已包含这些功能), 主要是控件标签的引入,
现在正在考虑引入方案, 是直接用JspTagLib适配器, 还是重新配置指令,

如:
$taglib{s: "struts.tld"}
$s_textfield{label: "密码", name: "pwd"}

如果确信名称不会冲突,也可以不用前缀:
$taglib{"struts.tld"}
$textfield{label: "密码", name: "pwd"}

这种通过适配器的方式, 可以兼容所有JspTagLib.

也可以在commontemplate.properties中配置指令定义:
directive{textfield}=xxx.TextFieldDirectiveHandler

2 楼 xyh 2008-01-03  
支持struts2的标签么?
1 楼 keel 2008-01-03  
强力支持一下,特别庆祝sample的问世!

相关推荐

    ADT-0.8.0.zip

    ADT-0.8.0.zipADT-0.8.0.zipADT-0.8.0.zipADT-0.8.0.zip

    openocd 0.8.0 for windows

    openocd for windows 0.8.0

    jadx-gui-0.8.0

    《jadx-gui-0.8.0:深入解析Android应用反编译工具》 在移动应用开发领域,了解和分析APK文件的内部结构变得越来越重要,这其中包括了安全测试、逆向工程以及代码学习等多个方面。在这个背景下,jadx-gui-0.8.0作为...

    classmate-0.8.0.jar

    classmate-0.8.0.jar

    bacnet-stack-0.8.0

    Bacnet-stack-0.8.0 是一个针对BACnet协议的开源实现,适用于各种嵌入式设备。这个版本的堆栈(stack)是0.8.0,它旨在为不同平台提供支持,包括Linux、Windows 32位系统、PIC微控制器以及ARM7架构的处理器。BACnet...

    chukwa-src-0.8.0.tar

    "chukwa-src-0.8.0.tar"是一个包含了Chukwa源代码的压缩文件,供开发者研究和定制。这个版本号0.8.0代表了Chukwa在当时的一个稳定版本,提供了一系列改进和增强的功能。 在深入探讨Chukwa的源码之前,我们先来了解...

    bazel-0.8.0

    - **combine_distfiles.py**: 这是一个Python脚本,可能用于组合和打包发布版的文件,用于创建像"bazel-0.8.0-dist.zip"这样的分发文件。 **总结** Bazel-0.8.0是一个特定版本的Bazel构建工具,用于自动化大型项目...

    bonecp-0.8.0.RELEASE.jar

    在标题中提到的 "bonecp-0.8.0.RELEASE.jar" 是BoneCP连接池的一个特定版本,版本号为0.8.0.RELEASE。 描述中提到了几个相关的JAR文件,它们分别是: 1. **bonecp.jar**:这是BoneCP的核心库文件,包含了连接池的...

    torch-1.6.0 + torchvision-0.8.0压缩包

    内含 torchvision-0.8.0a0+10d5a55-cp37-cp37m-linux_armv7l 和 torch-1.6.0a0+b31f58d-cp37-cp37m-linux_armv7l

    rabbitmq-c-0.8.0

    这个扩展允许PHP代码直接调用RabbitMQ的功能,如创建通道、发布和消费消息等。然而,由于PHP自身并不包含对RabbitMQ的原生支持,因此需要借助于像RabbitMQ-C这样的第三方库来实现。 下载"rabbitmq-c-0.8.0"压缩包后...

    xlrd-0.8.0.zip

    xlrd库是Python中广泛使用的开源库,其版本0.8.0提供了对早期Excel文件(.xls格式)的支持。虽然不支持最新的.xlsx格式(需要使用openpyxl或pandas等其他库),但对于处理大量的历史数据或者需要兼容旧版Excel文件的...

    rabbitmq-c-0.8.0.zip

    这些API包括连接管理、通道操作、交换机和队列的声明、消息发布和消费等功能。 3. **VS2013兼容性**:RabbitMQ-C-0.8.0版本表明它是兼容Visual Studio 2013的,这意味着Windows开发者可以使用这个库在64位环境下...

    pdfbox-0.8.0-incubating.jar fontbox-0.8.0-incubating.jar

    PDFBox的0.8.0-incubating版本代表这是一个早期的不稳定版本,可能包含一些未解决的问题或功能不完善的地方,但它是PDFBox发展过程中的一个重要里程碑。 FontBox是PDFBox的配套库,专注于处理PDF文档中的字体问题。...

    libthrift-0.8.0

    libthrift-0.8.0的java类库。

    jadx-0.8.0-b565-47917fd.zip

    本文将深入探讨jadx-0.8.0,一个高效且用户友好的Android应用反编译工具。 jadx,全称为Java Decompiler for Dex,是一款专为Android应用(APK)设计的反编译器。它的核心功能是将APK中的Dalvik字节码(DEX文件)...

    ppExtractor0.8.0.exe解包工具.rar

    《ppExtractor0.8.0.exe解包工具:掌握PP格式文件的解压与打包》 在IT领域,处理各种格式的文件是日常工作中不可或缺的一部分。本文将详细讲解一款名为ppExtractor0.8.0.exe的解包工具,以及如何使用它来解压缩pp...

    openhardwaremonitor-v0.8.0-beta.zip

    《OpenHardwareMonitor-v0.8.0-beta:全方位监控计算机硬件状态》 OpenHardwareMonitor是一款开源的硬件监控软件,其v0.8.0-beta版本提供了对计算机内部各种传感器数据的实时监测功能,帮助用户了解电脑运行时的...

    Arbie-0.8.0-py3-none-any.whl.zip

    在这个特定的案例中,它是一个名为"Arbie"的项目的版本0.8.0的发布。"py3-none-any"部分表示这个软件包是为Python 3编译的,可以在任何平台("none")和任何架构("any")上运行。".whl"文件是一种预编译的Python...

    fontbox-0.8.0-incubating.jar

    fontbox-0.8.0-incubating.jar开发搜索引擎所必需的包

    scipy-0.8.0-win32-superpack-python2.6.exe

    scipy-0.8.0-win32-superpack-python2.6,windows,python2.6的包

Global site tag (gtag.js) - Google Analytics