`
chinajavawolf
  • 浏览: 117089 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

(A20)Tapestry Core:Document Object Model

阅读更多
本文翻译出处 http://tapestry.apache.org/tapestry5/tapestry-core/guide/dom.html
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf  
文档对象模型
Tapestry5Tapestry4或其他框架比采取了一个非常不同的方法来标记生成。
l Tapestry4方法
Tapestry4里,标记生成是基于产生一个字符流。在最低级别里,事实上输出在标记格式里,比如HTML,XHTMLWML是未知的。较高级别,像IMarkupWriter 接口(及其实现)提供标记生成概念:元素,属性,开始标签和结束标签。
通常,组件将一起工作产生标记。一个通用的例子是一个Form组件和很多它包含的表单控制组件(像TextField,Checkbox等)。这个Form组件不能完全呈现直到所有附加的组件首先呈现。
ImarkupWriter支持嵌套writers。嵌套的writers是一种缓冲输出方法直到需要。一个Form组件将使用一个嵌套writer呈现他的body,然后写出他的< form >< input type=”hidden” >元素,同样嵌套,缓存body
当两个元素同等(不是父/子关系)时这种方法将崩溃。例如,呈现一个FieldLabel组件将被他的同伴组件TextField影响。在Tapestry4种处理这些情况需要许多补充和特殊方案。
lTapestry5方法
Tapestry5组件呈现出一个DOM,一个文档对象模型(Document Object Model)。这个文档内的树型节点表示为元素,属性和文本。
DOM可以完全运行在一个随机访问方式上。这要优于Tapestry4种连续的(或缓存)方法。
一个新的MarkupWriter接口允许大多数代码把生成的输出作为一个流。事实上, MarkupWriter更象一个DOM树中的指针。
一旦所有的呈现完成,DOM树被作为流交给客户端。计划增加控制输出个是,包括pretty-printing /输出压缩(去处所有多余的空格)。
DOM
尽管事实上一些第三方的替代选择存在,但实现DOM是 Tapestry 的一部份。这是一个希望限制依赖关系的框架, 而且Tapestry DOM 为初始化建立和少量并发的问题进行了改进。大多数DOM实现都较为成熟,对查询(通常是使用xpath)和操纵具有更大的支持.
一旦文档对象被创建,你不能直接创建新的文档对象;反之,每个文档对象包括方法创建新的子对象。这主要应用于Element类,它可以是一个文本,注释和其他元素的容器。
l文档(Document
文档对象表现为一个完整的文档,也就是说,一个完整响应被发送给客户端。
文档将有一个唯一的root元素。newRootElement()方法被用来为文档创建root元素。
l元素(Element)
少许文档元素可以有属性,并且他们可以包含其它的元素,像textcomments
addAttribute()方法添加一对新的属性/值元素。如果现有的属性指定的名称已经存在,那么新值会被忽略。这意味着当不同代码块尝试加入一个属性元素... 首先放入的属性将""
DOM被建造之后的一些基本操作尚未实现。计划增加一些方法重新培育DOM节点到新的元素内。另外,一些查询方法可以被加入。
MarkupWriter接口允许文档结构在维持一个流的时候被建造。
l element() and end()
调用element()创建一个新的元素在树内。并且提供属性给新的元素。调用write(), writeln() writef()在当前元素内书写文本节点。每个对于element()的调用都匹配一个end()调用,这被用来移动当前节点到上一层。
  1. writer.element("img""src""icon.png""width"20"height"20, alt, "*");   
  2. writer.end();   
注意end()必需被在这调用,即使< img >元素是空的(没有body)。如果忽略调用end(),那么稍后被调用的element()创建的元素将被潜逃在< img >元素内,这不是我们期望的。
此外,每个element()调用都必须匹配一个end()调用。
  1. writer.element("select""name""choice");   
  2.     
  3.  for (String name : optionsNames)   
  4.  {   
  5.     writer.element("option");   
  6.     writer.write(name);   
  7.     writer.end();   
  8.  }   
  9.     
  10.  writer.end();   
 
l attributes()
添加额外的名/值对在当前元素。
当值是空的时,没有属性被添加。
当一个新的名称和现有的名称冲突时,新的值被忽略。这使前面的值指定一个属性优于任何后继值.
l write()
Write()方法书写文本在当前元素内。它自动提供文本为XML控制字符('<', '>', '&')并且转换它们为它们在XML实体内的同等物('<', '>', '&')。结果是正确,安全的HTML/XML输出,即使内容(它可能是来自一个样板,或从外部源如数据库)包括这些有问题字符。
lwritef()
writef() 方法格式化大量的argument.它利用java.util.Formatter. 这是一个方便的格式化,最终调用write().
l  writeRaw()
writeRaw()方法书写未过滤的文本到DOM内。当DOM被呈现给标记时,将提供的字符串不作任何改变写入到输出流。应小心,因为这很容易造成无效标记,甚至标记不能很好的被格式化。
l comment()
添加一个XML注释。Tapestry支持这个注释分隔符。
 
  1. writer.comment("Start of JS Menu code");  
 
 
分享到:
评论

相关推荐

    Tapestry.5.Building.Web.Applications.pdf

    ### Tapestry 5:构建 Web 应用程序 #### 一、Tapestry 5 概述 Tapestry 5 是一个强大的 Java Web 开发框架,它为开发者提供了高效且简洁的方式去创建复杂的 Web 应用程序。本书《Tapestry 5:构建 Web 应用程序》...

    Tapestry开发

    &lt;tapestry:propertySelection name="country" label="Country" model="${countries}" /&gt; ``` **14. Table组件:** - **用途:**用于创建表格。 - **示例代码:** ```xml &lt;tapestry:table data-model="${users}...

    Tapestry字典0.1.pdf

    - **示例**: `&lt;tapestry:table model="${model}" columns="name,price"&gt;` **5.2 列表交互背景颜色** - **实现**: 通过CSS选择器来改变交互时的背景色。 - **示例**: `tr:hover { background-color: #f0f0f0; }` **...

    tapestry学习入门资料

    "tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...

    tapestry源码 api等

    1. **Tapestry Core**: 这是Tapestry框架的基础部分,包含了核心组件、服务容器(Tapestry IoC)和页面生命周期管理。通过源码分析,我们可以理解其如何实现页面组件的渲染、事件处理和依赖注入。 2. **Tapestry ...

    apache-tapestry-5.3.8-bin.zip

    2. **Tapestry Core**:`tapestry-core-5.3.8.jar`是Tapestry框架的核心库,包含了框架的基础组件、服务和API。它提供了页面、组件、事件处理、URL映射等功能,是构建Tapestry应用的基础。 3. **Plastic**:`...

    tapestry官方中文文档

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...

    tapestry-react:Apache Tapestry和React的集成

    挂毯React 将React( )与Tapestry( )一起使用。 该库提供了将Tapestry与JSX模板结合... define ( [ 't5/core/dom' , 'react' , 'react-dom' ] , function ( dom , React , ReactDOM ) { var HelloMessage = React

    Tapestry简单入门.rar_java Tapestry_tapestry

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型来构建动态、数据驱动的Web应用。本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用...

    tapestry5 build web application-alexander

    《Tapestry 5:构建Web应用程序》是关于Tapestry 5框架的一本权威指南。Tapestry 5是一个强大的Java Web应用框架,由Apache软件基金会开发并维护,它致力于提供一种更高效、更优雅的方式来构建动态、交互式的Web应用...

    深入浅出Tapestry

    资源名称:深入浅出Tapestry内容简介:本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在...

    优化大使tapestry-bin-5.0.18.zip

    这个压缩包包含了多个以"Tapestry"开头的子文件,如 "tapestry-core", "tapestry-hibernate", "tapestry-ioc", "tapestry-upload", 和 "tapestry-spring",这些都是Tapestry框架的不同模块或插件。这些文件的后缀是...

    基于Tapestry+Spring+Hibernate框架的Web应用

    与传统的MVC(Model-View-Controller)框架相比,Tapestry更加关注于组件的封装和复用,使得开发者能够更专注于业务逻辑而非底层细节。 #### Spring框架:实现业务逻辑与展示层的分离 Spring框架是一个轻量级的...

    Tapestry5, Packt.Publishing.Tapestry.5.Building.Web.Applications.Jan.2008.RETAiL.eBOOk-sUppLeX.pdf

    ### Tapestry5:构建Web应用程序 #### 一、Tapestry5概述 Tapestry5是一种先进的、基于Java的Web开发框架,它以其强大的功能、灵活性以及易用性著称。该框架由Howard Lewis Ship创建,并由Apache软件基金会维护。...

    (Tapestry)An infrastructure for Fault-Tolerant Wide-area Location and Routing.ppt

    Tapestry是一个分布式系统基础设施,专门设计用于实现容错性的广域定位和路由。这个系统由Ben Y. Zhao、John Kubiatowicz和Anthony D. Joseph等人在加州大学伯克利分校的计算机科学部开发,旨在应对无处不在计算的...

    tapestry-project-4.1.5

    《深入理解 Tapestry 4.1.5:项目实例与核心库解析》 Tapestry 是一个基于 Java 的开源Web 应用程序框架,它强调组件化开发,提供了一种强大的方式来构建动态、高性能的Web 应用。在"tapestry-project-4.1.5"这个...

    tapestry-cometd:基于 CometD 的 Tapestry5 推送库

    基于库 特征: 无需编写一行 Javascript 即可创建推送应用程序 完全可配置 使用设置传入消息的... xmlns : p = " tapestry:parameter " &gt; &lt;!-- type a chat message in this form --&gt; &lt; form t :

    Tapestry5.0.7

    - **tapestry-core**:Tapestry的核心库,包含了框架的主要功能和API。 - **tapestry-test**:测试支持模块,提供了针对Tapestry应用的单元测试和集成测试工具。 - **tapestry-spring**:Tapestry与Spring框架的...

    tapestry3开发指南,带tapestry3所有jar包

    **Tapestry 3 开发指南** Tapestry 3 是一个开源的Java Web应用程序框架,它在20世纪90年代末至21世纪初非常流行,由Apache软件基金会维护。这个框架提供了组件化、事件驱动和声明式编程模型,帮助开发者构建动态、...

Global site tag (gtag.js) - Google Analytics