Tapestry教程----组件类介绍

袁阿苏
2023-12-01
tapestry中的组件要比tapestry4的组件容易得多.不需要继承任何类.类是实体类,不再是虚类.不再需要任何XML配置文件.在T5中仅仅需要一点用注释配置说明,这些注释说明要放置在类中字段上方.
    组件类,页面类,component mixin 类,都是用同样的方法创建的.没有什么很特殊的地方.
组件类基础:
   
在T5中 创建页面和组件类是非常简单的,轻松的.
    有几点要求:
      1,类必须是公共的.
      2,类必须在正确的包中,要必须和前面配置文件中一致.
      3,类中必须有一个公共的,无参数的构造函数.
  下面就一个最基本的组件例子:
java 代码
    • package org.example.myapp.components;  
    •   
    • import org.apache.tapestry.MarkupWriter;  
    • import org.apache.tapestry.annotations.BeginRender;  
    •   
    • public class HelloWorld  
    • {  
    •     @BeginRender  
    •     void renderMessage(MarkupWriter writer)  
    •     {  
    •         writer.write("Bonjour from HelloWorld component.");  
    •     }  
    • }  
这个组件仅仅是在页面上输出一个指定的信息.其中
@BeginRender 注释是组件生命周期注释中一个类型.
组件包:
      组件类必须存放在指定的包中.这些包必须存放在应用程序根目录包(假如为root)下.
      页面类 ,必须放在root.pages;
       组件类 ,必须放在root.components
      mixins,必须放在root.mixins.
子目录/子包
    类不可能都直接放在这些包下(如pages,components,mixins等).类有可能存放在子包(子目录)中.那么子包名称成为页面或者组件类型名称的一部分.因此我们可能定义一个页面组件为com.example.myapp.pages.admin.CreateUser,他的逻辑页面名称(显示在URLS中名称)可能是admin/CreateUser.
    Tapestry提供了一些简单的页面名称(或者组件类型,或者mixins类型)的优化工作.检查包名称是否则类的名称的前缀或者后缀,如果是则可以把这些前缀或者后缀去掉.例如有这样一个类:com.example.myapp.pages.user.EditUser,这个类可以有一个名称为user/Edit的页面.这个目的是为了让URL更短,更加自然.
页面与组件的区别:
    页面和组件的区别是非常非常小的.仅仅是他们所在包名称不一样(页面:root.pages.PageName,组件:root.components.ComponentType);
 
 类似资料: