现在的位置: 首页 > 综合 > 正文

Tapestry简述

2013年08月04日 ⁄ 综合 ⁄ 共 2923字 ⁄ 字号 评论关闭

 
 Tapestry简述:
 Tapestry是一个servle的扩展,它运行于servlet容器(Tomcat)或包含servlet容器的服务器(如Jboss)
 通过使用Tapestry,开发者完全不需要使用JSP技术,用户只需要使用Tapestry提供的模板技术即可,
 Tapestry实现了视图逻辑和业务逻辑的彻底分离。
 
 Tapestry只有组件或页面两个概念,因此,链接跳转目标要么是组件,要么是页面,没有多余的path概念。
 组件名,也就是对象名称,组件名称和path名称合二为一。
 
 
 有三个文件:html,page,java;流程应该是:html--->page--->(根据application)java类
 
 普通的网页设计工具或浏览器是不能预览组件的
 
 组件事件请求(Component Event Request):通过一个页面请求start.actionlink触发页面类中的方法,根据此方法的
  返回结果,让客户端重定向到Another页面
  
 
 目前,面向组件的Web表现层框架有三种:Tapestry,JSF,Wicket。

 a) jwcid属性:(Java Web Component ID)在模板中用来指定组件。
 b) <span> 标签:HTML<span>标签是一个用来包容text和elements 的容器,其本身并不能显示任何内容,
   仅仅是作为一个stylesheet 协助对页面显示的控制。
   span行内元素,在行内定义一个区域,也就是一行内可以被 <span> 划分成好几个区域,从而实现某种特定效果。 <span> 本身没有任何属性。
    c)  @ 记号:用来标明一个隐式组件。
 html页面中: 
 jwcid:标识里的jwcid所指是被应用的Tapestry控件的Java Web Component ID.例如jwcid="@Form"是隐式地使用控件。
  隐式的控件是指直接在页面模板里声明使用的控件,jwcid的前缀 '@ '符号就是通知Tapestry这里声明使用了一个隐式控件
  像@Form,@TextField,@Insert,@Submit只是Tapestry框架提供的包含超过40个控件的控件库里的四个。
 d)Asset被用访问静态文件如images和 stylesheets,例如<context-asset name="image1"  path="images/messageBoard/1.gif"/>

 Tapestry中java类的作用:页面初始化函数中,即定义DAO(数据库操作类),执行sql,返回一个list,
         将这个list通过page定义的参数set回页面,然后页面展示出来。
 表格的<tr>中有元素source="ognl:List" ,source 参数可以接收List 类型或者Object[] 类型。
 页面中value="ognl:item" 中item就是page文件中name  <property-specification name="item" type="com.lygedi.wtms.dao.items.WtTruckComp" />
  type对应sql.xml配置文件中的resultClass:借助items,如com.lygedi.wtms.dao.items.WtTruckComp
  xml中的sql语句由WtTruckTrailerDAOImp的方法通过id读取,然后java类调用这个方法
 page是页面规范文件
 Insert组件就是实现out.print()功能
 
 JWC文件中:
 allow-body="no'是说这个控件不允许有body, allow-informal-parameters="yes"是说这个控件允许带非正式参数。
 <parameter name="toolItemDescriptions" type="java.util.List" direction="in" required="yes"></parameter>
    这个说明ToolBar控件需要配制一个叫toolItemDescriptions的参数,参数类型为java.util.List
 direction为in表示这个参数仅仅需要输入,不要输出,required=yes表示这个参数是必须的,一定要提供。
 
 首先这个控件的模版被一个
 <span jwcid="$content$"></span> 包围,这个是说明,只有这个区域里的内容才是有意义的,区域外的全被忽略。

 &copy;----版权信息(分号必须要)
 &nbsp;---空格
---------------------------------------------------------------------------------------------------------------------------
 自定义组件:
 <1>需要一个html,一个jwc,一个java类(java类一般是org.apache.tapestry.BaseComponent),html和jwc放在WEB-INF中component包下面
 jwc文件中<component-specification class="org.apache.tapestry.BaseComponent">指明关联的java类
 html文件书写自己显示的信息
 
 <2>在要调用组件的页面,添加<span jwcid="@ediCopyright"></span>  -----隐式组件
  也可以不用@符号,直接<span jwcid="ediCopyright"></span>但是在html对应的page页面就需要<component id="ediCopyright" type="ediCopyright"></component>
 <3>一定要在wtms.application中<component-type type="ediCopyright" specification-path="component/ediCopyright.jwc"/>
   即组件写完了必须在命名空间注册一下
   
 执行流程页面发现一个组件名,有@的直接通过application找到jwc路径(没有@的,通过id找到页面对应page中的type再到application中),
 再在jwc文件中找到java类建立组件,建立完之后输出html文件的信息
-----------------------------------------------------------------------------------------------------
 页面通过jwcid找到jwc文件,java类决定建立这个组件,再到jwc相同目录下的html文件

  Component null may not implement the IPage interface.-------------与显示有关的哪个java类没有从IPage家族继承 
   
 margin:0px  
 

 
 
 

抱歉!评论已关闭.