`
foxgst
  • 浏览: 3064 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

T5.0.6 扩展Grid列的方法

    博客分类:
  • Java
阅读更多

正在学习Tapestry中,根据搜索的资料和情况发布学习心得,目前使用的Tapestry版本是5.0.6。

参考资料:
1. 主题: T5 技巧 2:为Grid组件的每一行增加“删除/修改”链接。
   针对T5.0.5版本,方法稍微有点复杂(Order排序也已经过时)。目前版本是5.0.6,另给出了一个通用的简便的方法。
2. Adding modify/delete actions to a Grid
   虽然贴的是代码,但是对于在网页中如何使用没有给出实现。

原理:
dengyin2000已经把原理说得很清楚了,扩展BeanModelSource以实现复杂的表格(Grid)显示。

操作过程:
1. 创建需要的PropertyConduit,也就是新列(可以复用显示多列);
2. 修改Page类,增加Model的获取方法;
3. 修改相应网页,使用Grid显示数据(需要注意的是,新建列的显示需加入自定义的代码实现)。

主要代码:
1. 新建需要的Property

java 代码
 
  1. //PropertyConduit CLASS - implements the PropertyConduit Interface   
  2. class  Action Property implements  PropertyConduit {  
  3. public  Object get(Object arg0) { return   "" ;}  
  4. public  Class getPropertyType() { return  String. class ;}  
  5. public   void  set(Object arg0, Object arg1) {}  
  6. public   extends  Annotation> T getAnnotation(Class arg0) { return   null ;}  
  7. }  


 2. 修改Page类User,新增代码如下:

java 代码
 
  1. @Inject   
  2. private  BeanModelSource _modelSource;  
  3. @Inject   
  4. private  ComponentResources _resources;  
  5.   
  6. public  BeanModel getModelForGrid() {  
  7. PropertyConduit ap = new  Action Property ();  
  8. BeanModel result = _modelSource.create(User.class false , _resources);
  9. result.add("action", ap).label("操作").sortable(false);   
  10. // 你也可以使用如下方法把action列放在uuid(在User类中必须要有可访问的getUuid()方法)列的前面
  11. // result.add(RelativePosition.BEFORE, "uuid", "action", ap).label("操作").sortable(false);  
  12. // 你也可以复用ap再加入新列
  13. // result.add("chk", ap).label("选择").sortable(false);   
  14. return  result;  
  15. }  


3. 修改相应网页UserList.tml,使用Grid的代码如下:

xml 代码
  1. < table   t:type = "Grid"   model = "modelForGrid"   source = "users"   row = "currentUser"   pagerPosition = "bottom"   rowsPerPage = "5" >   
  2. < t:parameter   t:name = "actionCell" >   
  3. < a   t:type = "ActionLink"   t:id = "delete"   context = "currentUser.uuid" > 删除a >      < a   t:type = "ActionLink"   t:id = "modify"   context = "currentUser.uuid" > 修改a >   
  4. >   
  5. >   

 部分完整代码

1. Page类UserList.java

java 代码
  1. import  java.util.List;   
  2.   
  3. import  org.apache.tapestry.Block;   
  4. import  org.apache.tapestry.ComponentResources;   
  5. import  org.apache.tapestry.PropertyConduit;   
  6. import  org.apache.tapestry.beaneditor.BeanModel;   
  7. import  org.apache.tapestry.ioc.annotations.Inject;   
  8. import  org.apache.tapestry.services.BeanModelSource;   
  9.   
  10. import  com.senlang.sample.tapestryfive.demo.model.User;   
  11. import  com.senlang.sample.tapestryfive.demo.service.UserService;   
  12. import  com.senlang.sample.tapestryfive.demo.util.ActionProperty;   
  13.   
  14. public   class  UserList {   
  15.        
  16.      @Inject   
  17.      private  Block _noData;   
  18.        
  19.      @Inject   
  20.      private  UserService _usrv;   
  21.        
  22.      private  User _currentUser;   
  23.        
  24.      @Inject      
  25.      private  BeanModelSource _modelSource;   
  26.        
  27.      @Inject      
  28.      private  ComponentResources _resources;     
  29.        
  30.      public  List getUsers() {   
  31.          return  _usrv.getAllUser();   
  32.     }   
  33.        
  34.      public  BeanModel getModelForGrid(){    
  35.         PropertyConduit ap =  new  ActionProperty();      
  36.         BeanModel result = _modelSource.create(User. class false , _resources);    
  37.         result.add( "action" , ap).label( "操作" ).sortable( false );      
  38.          // 你也可以使用如下方法把action列放在uuid(在User类中必须要有可访问的getUuid()方法)列的前面    
  39.          // result.add(RelativePosition.BEFORE, "uuid", "action", ap).label("操作").sortable(false);     
  40.          // 你也可以服用ap再加入新列    
  41.          // result.add("chk", ap).label("选择").sortable(false);      
  42.          return  result;   
  43.     }   
  44.        
  45.      // 删除操作   
  46.     Object onActionFromDelete(String uuid) {   
  47.         System.out.println(String.format( "delete uuid=%s" , uuid));   
  48.          return   null ;   
  49.     }   
  50.        
  51.      // 修改操作   
  52.     Object onActionFromModify(String uuid) {   
  53.         System.out.println(String.format( "modify uuid=%s" , uuid));   
  54.          return   null ;   
  55.     }   
  56.   
  57.      public  Block getNoData() {   
  58.          return  _noData;   
  59.     }   
  60.   
  61.      public   void  setNoData(Block noData) {   
  62.         _noData = noData;   
  63.     }   
  64.   
  65.      public  UserService getUsrv() {   
  66.          return  _usrv;   
  67.     }   
  68.   
  69.      public   void  setUsrv(UserService usrv) {   
  70.         _usrv = usrv;   
  71.     }   
  72.   
  73.      public  User getCurrentUser() {   
  74.          return  _currentUser;   
  75.     }   
  76.   
  77.      public   void  setCurrentUser(User currentUser) {   
  78.         _currentUser = currentUser;   
  79.     }   
  80.   
  81.      public  BeanModelSource getModelSource() {   
  82.          return  _modelSource;   
  83.     }   
  84.   
  85.      public   void  setModelSource(BeanModelSource modelSource) {   
  86.         _modelSource = modelSource;   
  87.     }   
  88.   
  89.      public  ComponentResources getResources() {   
  90.          return  _resources;   
  91.     }   
  92.   
  93.      public   void  setResources(ComponentResources resources) {   
  94.         _resources = resources;   
  95.     }   
  96.        
  97. }  

2. 网页UserList.tml代码

xml 代码
  1. <!---->   
  2. < html   xmlns = "http://www.w3.org/1999/xhtml"   xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" >   
  3. < head >   
  4. < meta   http-equiv = "Content-Type"   content = "text/html; charset=utf-8"   />   
  5. < title > Samples - User Listtitle >   
  6. >   
  7. < body >   
  8. < t:block   id = "nodata" > 没有找到数据!t:block >   
  9. < h1 > List All Usersh1 >   
  10. < table   t:type = "Grid"   model = "modelForGrid"   source = "users"   
  11.      row = "currentUser"   pagerPosition = "bottom"   rowsPerPage = "5"   empty = "nodata" >   
  12.      < t:parameter   t:name = "actionCell" >   
  13.          < a   t:type = "ActionLink"   t:id = "delete"   context = "currentUser.uuid" > 删除< a >   
  14.          < a   t:type = "ActionLink"   t:id = "modify"   context = "currentUser.uuid" > 修改< a >   
  15.     t:parameter >   

 3. User类的实现代码

java 代码
  1. public   class  User {   
  2.      private  String _uuid;   
  3.      private  String _username;   
  4.      private  String _password;   
  5.      public  String getUuid() {   
  6.          return  _uuid;   
  7.     }   
  8.      public   void  setUuid(String uuid) {   
  9.         _uuid = uuid;   
  10.     }   
  11.      public  String getUsername() {   
  12.          return  _username;   
  13.     }   
  14.      public   void  setUsername(String username) {   
  15.         _username = username;   
  16.     }   
  17.      public  String getPassword() {   
  18.          return  _password;   
  19.     }   
  20.      public   void  setPassword(String password) {   
  21.         _password = password;   
  22.     }   
  23. }  
分享到:
评论
3 楼 hitalang 2007-12-02  
t5.05中datafield,时间控件怎么用???
2 楼 foxgst 2007-11-13  
主要是网页代码显示的问题,使用xml格式居然不对,贴张截图。
1 楼 foxgst 2007-11-13  
JavaEye的编辑器不是一般的难用,整了十几次才贴成这样。
现在的代码还是有问题,不想整了,大致意思已经说明白了,有问题请回复吧。

相关推荐

    MongoDB 5.0.6 windows版本

    MongoDB 5.0.6 windows版本

    redis-5.0.6安装包

    在Redis-5.0.6中,引入了一些新的特性和改进,比如模块系统(Module System),允许开发者扩展Redis的功能,创建自定义数据类型和命令。另外,此版本还提升了性能,优化了网络I/O,降低了内存占用,并修复了已知的...

    RealVNC-v5.0.6

    《RealVNC-v5.0.6:远程访问与网络管理的强大工具》 RealVNC-v5.0.6是一款广泛使用的远程访问软件,尤其在IT行业,它被视为网络管理员的得力助手。该版本是RealVNC软件的第五个主要更新,版本号为6,表明了它在功能...

    ESXi安装SCO5.0.6

    标题与描述概述的知识点主要涉及在VMware ESXi 5.1环境下安装SCO UNIX 5.0.6操作系统,这是一个针对老旧系统迁移至现代硬件平台的解决方案,利用虚拟化技术来克服硬件兼容性问题。下面将对这一过程进行详细解析。 #...

    redis-5.0.6.tar.gz

    7. **模块系统**: Redis 5.0.6支持模块扩展,允许开发者为Redis添加自定义功能,例如地理位置索引、图形数据库等。 8. **内存管理**: Redis内存管理包括LRU(Least Recently Used)和LFU(Least Frequently Used)...

    Spring-5.0.6版本jar包

    总之,Spring 5.0.6版本jar包是构建高效、可扩展的Java应用的基石,结合其丰富的模块和强大的第三方库支持,能够满足开发者的各种需求。对于Java开发者而言,深入理解和熟练掌握Spring框架的使用是提升开发效率和...

    FumeFX v5.0.6 for 3ds Max 2019

    FumeFX的核心在于其流体模拟引擎,它基于物理的模拟方法,能够精确地模拟气体的行为,包括膨胀、压缩、燃烧、扩散等现象。这种模拟方式使得用户在3ds Max中可以创造出高度真实的火焰、烟雾、水和其他流体效果,极大...

    官方原版spring-framework-5.0.6.RELEASE.rar

    在数据访问层,Spring Data项目继续扩展,提供了对各种数据库的简化访问,包括JPA、MongoDB、Neo4j等。5.0 版本可能包含对新版本数据库驱动的支持和新的查询方法。 文档方面,`spring-framework-5.0.6.RELEASE-docs...

    iTextAsian-5.0.6

    iText-5.0.6对应的iTextAsian。 修改了Path

    Highcharts-5.0.6.zip

    2. **highcharts-more.js**:扩展库,包含了更多高级图表类型。 3. **modules**目录:包含各种模块,如exporting(导出功能)、drilldown(下钻功能)等。 4. **themes**目录:预设的不同风格的主题文件,可以快速...

    Java包 iText-5.0.6.jar

    iText-5.0.6.jariText-5.0.6.jar

    VNC 5.0.6 Windows版

    VNC 5.0.6 Windows版

    spring-framework-5.0.6.RELEASE-dist.zip

    《Spring Framework 5.0.6.RELEASE:Java后端开发的强大工具》 Spring Framework作为Java开发中的核心框架,以其强大的功能和灵活的设计理念,在后端开发领域占据着举足轻重的地位。5.0.6.RELEASE是该框架的一个...

    ApiLogicServer-5.0.6-py3-none-any.whl

    ApiLogicServer-5.0.6-py3-none-any.whl

    iText-5.0.6.jar

    开始使用的iText-5.0.6.jar,比较新的了

    spring-framework-5.0.6.RELEASE 下载

    Spring Framework 4.3.17 和 5.0.6 已发布,可从 repo.spring.io 和 Maven Central 获取更新。 官方表示,Spring Framework 4.3.17 包含了 15 个修复程序和一系列改进,而 Spring Framework 5.0.6 包含了 40 多个...

    spring-framework-5.0.6.RELEASE官方完整包加官方文档

    Spring Framework 5.0.6.RELEASE 是一个重要的版本,它是Java开发中广泛使用的轻量级框架...通过深入学习和实践,开发者可以构建出高效、可维护的Java应用,并充分利用Spring的灵活性和扩展性来应对复杂的企业级挑战。

    mysql-connector-java-5.0.6

    MySQL Connector/J 5.0.6 是 MySQL 数据库与 Java 应用程序之间的桥梁,它是一个 JDBC 驱动程序,允许 Java 开发者在 Java 应用中连接到 MySQL 数据库并执行 SQL 查询。MySQL Connector/J 遵循 Java Database ...

    Sco Unix 5.0.6 中文环境 东方龙马

    《Sco Unix 5.0.6 中文环境 东方龙马:系统安装与操作详解》 Sco Unix 5.0.6 是一款历史悠久且备受赞誉的Unix操作系统版本,特别针对中文用户进行了本地化处理,由东方龙马公司提供支持。这个版本的发布为当时的...

    iText-5.0.6.zip

    这个压缩包"iText-5.0.6.zip"包含的是iText库的5.0.6版本,一个在2013年发布的稳定版本。iText库主要用于创建、修改、合并以及解析PDF文档,使得开发人员能够方便地在应用程序中集成PDF功能。 iText的核心功能包括...

Global site tag (gtag.js) - Google Analytics