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

CommonTemplate增加HTML标签版语法外套

    博客分类:
  • HTTL
阅读更多
CommonTemplate(http://www.commontemplate.org)已提供了注释版和属性版语法外套.
注释版语法外套:
<html>
    <body>
        <!--$if{users != null && users.size &amp;gt; 0}-->
        <table border="1">
            <!--$for{user : users}-->
            <tr>
                <td><!--$output{for.index + 1}-->1<!--$end--></td>
                <td><!--$output{user.name}-->james<!--$end--></td>
                <td><!--$output{user.coins}-->2.00<!--$end--></td>
            </tr>
            <!--$end-->
        </table>
        <!--$end-->
    </body>
</html>

属性版语法外套:
<html>
    <body>
        <table ct:if="users != null && users.size &amp;gt; 0" border="1">
            <tr ct:for="user : users">
                <td><span ct:output="for.index + 1">1</span></td>
                <td><span ct:output="user.name">james</span></td>
                <td><span ct:output="user.coins">2.00</span></td>
            </tr>
        </table>
    </body>
</html>

当模板应用于XML/HTML时, 可能需要保持完整的DOM模型结构,
属性版语法外套也可以做到, 但转换比较耗时, 且存在不规则HTML语法兼容问题.
桂林提议加入XML/HTML标签版语法外套, 使用如:
<html>
    <body>
    	<ct:if param="users != null && users.size &amp;gt; 0">
	        <table border="1">
	        	<ct:for param="user : users">
	            <tr>
	                <td><ct:out param="for.index + 1"/></td>
	                <td><ct:out param="user.name"/></td>
	                <td><ct:out param="user.coins"/></td>
	            </tr>
	            </ct:for>
	        </table>
        </ct:if>
    </body>
</html>

其结构与标准语法是一对一的, 转换起来非常方便.
使用ResourceFilter扩展点进行实现,
在资源加载时使用简单的正则表达式替换,
不解析HTML语法,也就没有不规则HTML语法兼容问题,
只用了两条正则表达式, 就完成了转换:
text = text.replaceAll("\\<ct\\s*\\:\\s*([0-9|_|A-Z|a-z]+)\\s+param\\s*\\=\\s*\\"([^\\"]+)\\"\\s*\\/?\\>", "\\$$1{$2}");
text = text.replaceAll("\\<\\/\\s*ct\\s*\\:\\s*([0-9|_|A-Z|a-z]+)\\s*\\>", "\\$end{$1}");

加载模板资源时有内存消耗和转换时间消耗,但消耗不是很大,
从0.8.7版本开始支持.
参见:
http://www.commontemplate.org

2
1
分享到:
评论
8 楼 xgene 2008-10-13  
ct_struts2-0.8.7-sp1.war 更名=>tpl.war,放入apache-tomcat-6.0.16的wabapps中,启动tomcat,到http://localhost:8080/tpl/edit.action?user.id=15页面, 不停的点击IE刷新按钮(快速的连续点击),有时候你会看到输入框内的数据是空的
7 楼 javatar 2008-10-13  
使用tomcat5.5.25, 6.0.14,  6.0.16,  6.0.18 测试均未重现该问题, 希望能给出详细的重现步骤, 谢谢.
6 楼 xgene 2008-10-12  
有时刷新几下就出现变量的内容消失了,有时刷新很久才出现
5 楼 xgene 2008-10-12  
我又来了! 上个问题知道了,现在又有一个问题! 也是例子程序!
如何在这里http://localhost:8080/tpl/view.action?user.id=15
我要是不停的刷新浏览器! 有时会出现数据丢失! 为什么?
4 楼 javatar 2008-10-11  
需要加单引号, 否则user.id.title表示变量.
<span ct:message="'user.id.title'">User ID</span>
3 楼 xgene 2008-10-09  
<!--$output{user.email}-->james@xxx.com<!--$end-->
转换成属性是
<span ct:output="user.email">james@xxx.com</span>

<!--$message{"user.id.title"}-->User ID<!--$end-->
转换成属性是什么?
我写成<span ct:message="user.id.title">User ID</span>
没效果
2 楼 betafox 2008-10-07  
建议加入xml的xpath支持!!
1 楼 jianfeng008cn 2008-09-10  
很好,很强大!

相关推荐

    HTMl语法分析程序

    2. **miniBrowse.java**:根据标签“Java小程序”,我们可以推断这可能是该HTML语法分析程序的核心源代码文件,用Java编程语言编写。Java是一种广泛使用的面向对象的编程语言,以其跨平台能力和安全性著称。在这个...

    html 语法手册下载 chm版.RAR

    这份“html 语法手册下载 chm版.RAR”压缩包包含了关于HTML语法的全面指南,适用于初学者和有一定经验的开发者,帮助他们深入理解和掌握HTML的各种元素、属性和结构。 在“html语法教程.chm”中,你将找到以下关键...

    学习HTML语法.zip

    学习HTML语法学习HTML语法学习HTML语法学习HTML语法学习HTML语法 学习HTML语法学习HTML语法学习HTML语法学习HTML语法学习HTML语法 学习HTML语法学习HTML语法学习HTML语法学习HTML语法学习HTML语法 学习HTML语法学习...

    commontemplate框架

    1. **易学易用**:CommonTemplate的语法简洁,易于理解和学习,降低了开发门槛。 2. **高效性能**:通过编译模板为Java字节码,提高了模板的执行效率。 3. **良好的可扩展性**:支持自定义指令和标签库,满足复杂...

    Sublime Text设置新建标签语法为HTML.rar

    使用方法:复制压缩包中的“DefaultLanguage.py”到“Sublime Text文件夹\Data...Ctrl+N新建文档,默认即为HTML文件。 查阅了一些资料,自己整理的。 压缩包中包含参考文档,说的不是特别清楚,直接用我的文件就可以。

    Markdown语法大全(超级版).pdf

    Markdown语法大全(超级版)是Markdown语法的全面指南,涵盖了Markdown的设计理念、内联HTML语法、特殊字符自动转义、行内语法、标题、任务列表、缩进、换行、空行、对齐方式、斜体、粗体、删除线、下划线、背景高亮...

    JSP技术的语法-标签

    **JSP技术的语法-标签** 在Web开发中,JavaServer Pages (JSP) 技术是一种用于构建动态网页的应用程序开发平台。JSP通过结合HTML、CSS、JavaScript以及Java代码,提供了强大的功能来创建交互式的网页。本篇将详细...

    HTML语法教学.pdf

    2. 分隔标签:也就是所谓的水平线,是 HTML 语法中用来分隔内容的标签。 3. 排版标签:针对标签的属性,可以做适当的版面编排。 4. 字体标签:教导您设定文字的字体。 5. 文字标签:教导您设定文字的颜色、行距、...

    html5基础语法与标签.md

    html5基础语法与标签.md

    《HTML语法大全 》(高清晰)pdf版

    以上仅是HTML语法的一部分,全面掌握HTML需要学习更多的标签和属性,以及如何结合CSS和JavaScript进行更复杂的设计和交互。《HTML语法大全》作为一本详实的参考书,提供了丰富的示例和解释,是学习HTML不可多得的...

    HTML+CSS基础教程-介绍HTML和CSS的基础知识 学习HTML基础语法、标签、CSS基础语法和选择器

    html----HTML+CSS基础教程(课件PPT版)----介绍HTML和CSS的基础知识。学习HTML基础语法、标签、CSS基础语法和选择器,以及它们的基本用法。

    html、css、javascript语法手册

    - `&lt;SCRIPT&gt;`:包含JavaScript代码,用于增加交互性和动态功能。 `&lt;TITLE&gt;`标签是HTML头部的重要组成部分,它不仅在浏览器的标题栏中显示,还影响着网页在收藏夹和书签中的显示,以及在搜索引擎优化(SEO)中的...

    html语法总结html语法总结html语法总结html语法总结

    这只是HTML语法的一部分,实际上HTML还包括表格、表格、框架、表单等更复杂的元素和属性,以及CSS(层叠样式表)用于美化网页外观和JavaScript用于增加交互性。学习HTML是构建动态、交互式网页的基础。

    Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))

    双花括号语法,会将数据中的 HTML 转为纯文本后再进行插值。为了输出真正的 HTML,你需要使用 v-html 指令: 使用双花括号语法:{{ rawHtml }} 使用 v-html 指令:&lt;span v-html=rawHtml&gt;&lt;/span&gt;&lt;/p&gt; 使用双花括号...

    详解HTML&CSS&JavaScript语法辞典

    ### 详解HTML、CSS与JavaScript语法辞典 #### HTML(HyperText Markup Language) HTML是一种标记语言,用于构建网页的基本结构。它由一系列的元素组成,这些元素通过标签表示。了解HTML的基本语法对于创建任何...

    HTML5 语法知识总结 思维导图

    适用于想复习HTML5所以标签,语法的同学 适用于HTML5期末考试的一个快速复习 适用于快速查找与记忆HTML5大量标签的同学 适用于忘了某些标签,想快速查看的同学 适用于喜欢阅读思维导图的同学 使用场景: 个人复习 ...

    HTML语法速查

    在《HTML语法速查》这份文档中,虽然提供的内容主要是图片形式,但我们可以基于标题、描述和标签推测出,其主要目的是为学习者提供一个快速查阅HTML基础语法的资源。以下是对HTML核心概念与常用语法的详细介绍,旨在...

    html_css_javascript语法手册

    html_css_javascript语法手册 html_css_javascript语法手册 html_css_javascript语法手册 html_css_javascript语法手册 html_css_javascript语法手册

    java版语法分析程序

    Java版的语法分析程序是计算机科学领域中编译器设计的一部分,主要负责将源代码转换成解析树(或称为抽象语法树,AST - Abstract Syntax Tree)的结构,这是编译器理解并处理程序语句的基础。这个过程通常分为词法...

Global site tag (gtag.js) - Google Analytics