1 / 15

Corner2 简介

Corner2 简介. 简介 Corner 开发环境 了解 Corner 组件介绍 Demo 参考资料. 简介. Corner 是一个快速开发 J2EE 应用的框架,采用 spring 作为核心 service 的管理,采用 hibernate 作为持久化层,采用 tapestry 作为其展现层 . 框架通过开发 tapestry 组件以实现功能复用,做到一次开发处处使用,一次修改处处变化。框架中已涵盖项目开发中常见的组件。可以把主要精力放到业务的实现。 Tapestry 简介:

simon-tyson
Download Presentation

Corner2 简介

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Corner2 简介 by:李少卿(lishaoqing2007@msn.com) 2012-04-20

  2. 简介 • Corner开发环境 • 了解Corner • 组件介绍 • Demo • 参考资料

  3. 简介 • Corner是一个快速开发J2EE应用的框架,采用spring作为核心service的管理,采用hibernate作为持久化层,采用tapestry作为其展现层. 框架通过开发tapestry组件以实现功能复用,做到一次开发处处使用,一次修改处处变化。框架中已涵盖项目开发中常见的组件。可以把主要精力放到业务的实现。 • Tapestry简介: Tapestry是一个强有力、开源、基于Java的用于开发高端WEB应用的framework。它是JSP的一种替代方法,使用Tapestry,可以让你的页面看不到一句JSP代码,这使页面看起来非常干净。它可以用很少的代码来构造一个极端复杂的WEB应用。基于组件的开发。 Tapestry好处: 1、非常高的代码复用性,因为在tapestry中,任何事物都可以看作一个可复用的组件。 2、将JSP开发者从繁琐的JSP代码中解脱出来,取而代之的是真正面向对象方法,而不是URL解析。

  4. 3、对页面国际化的充分支持 4、精确地错误报告,可以将错误定位到源程序中的行,取代了JSP中那些莫名奇妙地错误提示。 5、充分支持团队开发,美工人员和JAVA开发人员可以融洽地相处,互相都不依赖于对方。 在Tapestry里一个页面,一个按钮,一个input都是组件。 页面文件简单结构:一个.page文件(以XML的格式)、一个HTML模板、一个JAVA类(抽象类)

  5. Corner开发环境 • Eclipse及其插件: m2eclipse, testNG,runJettyRun, svn,ruby, groovy等 • 项目构建工具:maven,nexus

  6. 了解Corner • Corner在hibernate,spring,tapestry的基础上构建 • 实现了对基本数据的封装,和对tapestry的扩展。使程序员减少编码,更 多关注业务。 eg: xxxForm.page对应的类class=“corner.orm.tapestry.page.PoFormPage” xxxList.page对应的类为class=”corner.orm.tapestry.page.PoListPage” • 实现了页面之间数据传递的对象化,只需要关注对象,而不必关心对象的细节。 eg: 在corner中,修改页面中一个实体的属性时,不需要传递这个对象的id,而只需传递一个entity即可。 <a paramaters=“ognl:entity” listener=“listener:doEditEntityAction” jwcid=“@DirectLink“ href=“AForm.html” id=“editAction”>

  7. 在corner中,严格限定html,page文件的命名规则。在corner中,严格限定html,page文件的命名规则。 用于显示数据的页面需为xxxList.html 对应page为xxxList.page 用于修改 添加数据的页面为xxxForm.html对应page为xxxForm.page • List页面展示数据组件:@contrib:TableView, @For @contrib:TableView 配合@contrib:TableRows,@corner:TablePages来显示表格(table)数据,分页。 eg: • <div jwcid="@contrib:TableView" columns="shortName" element="div" source="ognl:source" persist="client"> • <table> • <tr> • … • </tr> • <tr row="ognl:entity" jwcid="@contrib:TableRows" element="tr"> • … • </tr> • </table> • <div jwcid="@corner:TablePages" element="div"/> • </div>

  8. @For eg: <tr jwcid="@For" source="ognl:versionInfo" value="ognl:entity" element="tr"> • List页面查询,Form页面提交需使用Form组件,其他如input,submit等组件需包含在Form组件内。 eg: xxx.html <form jwcid=“AQueryForm”> xxx.page <component type=“Form” id=“AQueryForm”> <binding name=“listener” value=“listener:doQueryEntityAction”/> <binding name=“delegate” value=“ognl:beans.delegate”/> </component>

  9. 实体之间的关系有one one-to-many many-to-many • Corner提供了封装好的页面类(.page文件里指向的java类)。方便处理这些实体间的关系。如有需要可以继承实现自己的业务。 • corner.orm.tapestry.page.PoListPage 抽象的对所有实体的操作。用于处理one的list页面。如需扩展请继承其父类。 • corner.orm.tapestry.page.PoFormPage 对实体的表单操作。用于处理one的Form页面。如需扩展请继承其父类。 • corner.orm.tapestry.page.relative.ReflectRelativeEntityListPage 适用于对one-many/many-to-many时候many端列表的操作 • corner.orm.tapestry.page.relative.ReflectRelativeEntityFormPage 适用于one-to-many时候,对many端的实体操作 • corner.orm.tapestry.page.relative.ReflectMultiManyEntityFormPage 适用含有多个关联关系的实体操作。如实体A,B是many-to-many。在同一个页面编辑A并展示A关联的B的集合。并对B有编辑,删除,新增功能。抽象来说就是在同一个页面包含A,B两个实体的操作,且A,B有关联关系。

  10. corner.orm.tapestry.page.relative.ReflectRelativeMidEntityFormPagecorner.orm.tapestry.page.relative.ReflectRelativeMidEntityFormPage 适用于中间表(many-to-many)的操作 • corner.orm.tapestry.page.relative. ReflectRelativeSelectionListPage 适用于对many-to-many时候对另外一个many端进行选择的操作,提供一个选择的列表。 • corner.orm.tapestry.page.relative. IPageRooted<T,E> interface 有关联关系的页面,通常为了记录根对象 • corner.orm.tapestry.page. EntityPage interface 基本的实体操作接口。所有的页面都实现了此接口 • corner.orm.tapestry.page. IBlobPage interface 抽象的针对blob的页面. • corner.orm.tapestry.page. IDialogAction<T> interface Dialog的接口 • 其他page相关的类请参考corner.orm.tapestry.page.*

  11. 需要注意的方法 public IPage doSaveEntityAction() :Form页面用来保存entity protected IPage getEntityListPage():保存之后跳转到的页面 public IPage doQueryEntityAction():List页面用来查询的监听方法 public IPage doDeleteEntityAction(T entity):删除实体 public IPage doEditEntityAction(T entity):编辑实体 public IPage doNewEntityAction():新增实体 public Criteria createCriteria(Session session):查询 使用QBC publicvoid appendOrder(Criteria criteria):排序 public IBasicTableModel getSource():列表source配合@contrib:TableView 使用 • 其他方法请参照代码或API。 • PS tapestry的跳转只要返回IPage对象就可以,也可以返回EntityPage。

  12. 验证 格式化 • Tapestry提供丰富的验证(validator) 需要扩展请继承BaseValidator • Tapestry提供了基本的格式化(translator),需要扩展请继承相应的translator或AbstractTranslator • 源码请看corner.orm.tapestry.translator, corner.orm.tapestry.validator • 国际化 Html中 <span key="link.edit">edit</span> 生成html文件同名的properties文件,指定可以对应的国际化 如:xxList_zh.properties

  13. 组件的使用 组件的使用很简单,在前边介绍@contrib:TableView, @For的时候已经看到一部分。 简单来说有2种方法: html:需要有@ <span jwcid="@Insert"value="ognl:entity.name">name</span> page: page中定义,html中使用 <component type="TextField" id="nameField"> <binding value="message:name" name="displayName"/> <binding value="translator:string" name="translator"/> <binding value="ognl:queryEntity.name" name="value"/> </component> <input jwcid="nameField" />

  14. 组件介绍 • Tapestry组件 Tapestry提供了丰富的组件,具体请看:http://tapestry.apache.org/tapestry4/tapestry/ComponentReference/Body.html • Corner组件 请参见:Corner_famulus.doc Corner3已经发布,敬请期待。

  15. 参考资料 • 项目托管地址 http://code.google.com/p/corner/ • corner-reference.pdf Corner_famulus.doc http://code.google.com/p/corner/downloads/list • Tapestry4 http://tapestry.apache.org/tapestry4/tapestry/ • Tapestry5 http://tapestry.apache.org/ • 进阶书籍:EnjoyWebDevWithTapestry

More Related