浏览 1720 次
|
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-09-11
https://fastm.dev.java.net/servlets/ProjectDocumentList
使用方法和Fastm一样简单。 Fastm的使用方法是 render( fastm template, pojo model) => result DOMPlus的使用方法 bind(DOM node, pojo model) => SAX, or DOM domplus0.1a下载包里面包括,readme.txt. 所有的source, 和 test。还包括最新的还没有正式发布的fastm source。 html , xml, result html 也都在test的source目录下。 由于unit test case需要比较template result,所以都放到了test 的 src的资源目录下面。sample 也是test. DOMPlus和Wicket一样,采用了很少量的自定义XML Attribute。 Fastm, DOMPlus和Wicket一样,都属于Model Match技术 -- 用户提供一份View Model,然后Match Engine把View Model和template匹配在一起。template本身不包含任何logic,script。 所不同的是,类似于Swing,Wicket要求用户提供一个特殊的View Model。Table, List等框架定义的数据类型。而且Wicket难以脱离Web环境使用。 Fastm, DOMPlus 不需要用户提供特殊类型的View Model, 只需要提供POJO就可以。 POJO可以是任何Object. bean, map, DOM。 所以,对于DOMPlus来说。 DOM + DOM => DOM or SAX XML + XML => XML 恰好是XSL的功能。XSL也是XML(XSL) + XML => XML 所不同的是,DOMPlus的XML Template是Pure HTML,所见即所得。HTML Template干净程度直追XMLC,等同或者超过Wicket(更别说Tapestry)。 用法: Fastm Template只有2个自定义标记。BEGIN-END 和 {}。标记动态块和变量。 DOMPlus也是如此。针对DOM Node类型,只有3个自定义Attribute。 nodeTarge标记动态Element;attributesTarget标记动态attriburtes;textTarget标记动态text。 比如,下面这段HTML <table border="1"> <tr nodeTarget="row"> <td bgcolor="red" attributesTarget="bgcolor=@bgcolor" nodeTarget="col" textTarget="data">grid value</td> </tr> </table> 和下面这段XML Data <data> <preface>dynamically set title</preface> <row> <col bgcolor="green"><data>grid 1</data></col> <col bgcolor="yellow"><data>grid 2</data></col> <col bgcolor="green"><data>grid 3</data></col> </row> <row> <col bgcolor="yellow"><data>grid 4</data></col> <col bgcolor="green"><data>grid 5</data></col> <col bgcolor="yellow"><data>grid 6</data></col> </row> </data> 配合起来,就产生一个填充了数据行列的table。 DOMPlus和所有的基于DOM Node的技术一样,比如XMLC等,最小的处理单位都是Node。对于希望只替换部分text的需求来说,可以引入外来的text parser engine. 比如,fastm, regular expression, velocity, freemarker等。 <a href = "http://www.domain.com/app/{id}.text" DOMPlus的一个例子就是采用fastm作为text parser。 当然,fastm同样可以接受DOM作为Model。 缘起:why write DOMPlus. 一位使用Fastm的程序员朋友,督促我采用Wicket Tag的方式,放弃XML Comment的标签方式。 另一位使用Fastm的程序员朋友干脆督促我,让Fastm实现自定义标签。 我正好也需要进一步改进重构fastm,提高动态include template iteration, template recursion (递归树形数据需要的递归template)的空间和时间效率。所以,就一起改进了。 以至于,fastm能够支持自定义如下的mark. <p being=''block"/> // 动态块 <span name="variable"> default value </span> // 变量 <p end ="block"> 但是做到这样,第一位朋友仍然不满意,他希望fastm能够达到Wicket的效果,能够支持tag之间的嵌套层次关系。 于是我就干脆开发了DOMPlus。把fastm的思路移植到XML DOM。 我也尝试把DOMPlus移植到Javascript。DOM + DOM = DOM 对 Ajax来说,用起来太容易不过了。只是我的JavaScript的调试能力有限。而且重构困难。所以,写完了,还没有进行调试和运行。说实话,还不知道how。以后我可能会继续。 如果DOMPlus的JavaScript版本存在的话,可能是XSL之外的一个Ajax 处理复杂HTML Layout(尤其是多重循环,多重数据)的更加简单易用的可选工具。 Java Script也有TrimPath JST等Scripted Template. 但这些template并不是Pure HTML, 可能无法直接在browser里面显示。 ---- 数据寻址方式。 如果Model是POJO, 一般遵守OGNL style。 如果Model是DOM, 一般遵守XPath style。 当然,可以采用JXPath之类的工具,把对POJO的访问也统一为XPath。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-10
顶一个!强烈支持! :lol:
|
|
| 返回顶楼 | |





