CN105335160B - 一种基于jsf的web端组件敏捷开发方法 - Google Patents
一种基于jsf的web端组件敏捷开发方法 Download PDFInfo
- Publication number
- CN105335160B CN105335160B CN201510763205.XA CN201510763205A CN105335160B CN 105335160 B CN105335160 B CN 105335160B CN 201510763205 A CN201510763205 A CN 201510763205A CN 105335160 B CN105335160 B CN 105335160B
- Authority
- CN
- China
- Prior art keywords
- jsf
- tree
- interface
- web terminal
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于JSF的WEB端组件敏捷开发方法,包括以下步骤,步骤一,分析应用软件界面中对复杂组件的使用;所述复杂组件包括表格、树和PanelMenu;步骤二,通过抽象的类和接口,将具体内容存在差异数据对象抽象为统一的抽象基类或接口;步骤三,利用反射及注入技术,为复杂组件提出了若干通用的组件模型;步骤四,在开发时,将模型类实例化,定义实例化的变量。本发明大大简化了复杂组件在应用软件的使用,大大提高基于JSF的WEB端软件开发的敏捷性。
Description
技术领域
本发明涉及一种基于JSF的WEB端组件敏捷开发方法,属于基于JSF技术开发的B/S架构的计算机应用软件开发领域。
背景技术
近年来随着基于JavaServerFace(简称JSF)技术的B/S架构的计算机应用软件的开发技术的发展,JavaServerFace已经由1.0发展到2.2版本,由JSF和AJAX技术相结合形成的RichFace、Iceface、MyFace等框架在计算机应用软件开发领域得到了越来越多的应用,JSF以服务器端组件技术和传统JSP、Struts架构相比为应用软件的界面开发提供了组件支持,由于JSF提供的大量的界面组件大大提高了应用软件客户端开发效率,虽然如此,对于应用软件客户端开发过程中经常使用的如:Table表格、PanelMenu、树等复杂组件还是比较复杂,在实际的应用开发过程中,Table表格有两种,一种是表格的栏目是固定的,表格的一行对应一个javabean对象实例;另一种是表格栏目不固定,例如在开发通用的数据库数据查询界面时,由于查询的数据库对象不同,数据表格栏目不同,这种表格的一行就不能使用javabean对象来对应。树也有两种,一种树中的所有的节点都是一类对象;另一种树的节点不是同一类对象,父层次和子层次对象是不同类别对象,例如:父节点是唱片,子节点是唱片中歌曲。目前基于JSF的WEB应用软件开发中,JSF提供了组件界面绑定技术,由具体的应用软件为使用到的各类组件提供数据模型、属性及方法绑定。在一个具体应用软件开发过程中大量地使用Table表格、树、PanelMenu等复杂组件,由于在应用软件界面中使用的每一个Table表格、树、PanelMenu等复杂组件对应的数据对象不同,软件工程师必须为每一个复杂组件的使用准备数据模型、属性及方法,无法通用,这样工程师必须编写大量的软件代码,软件可重用性差,软件的错误出现概率高,软件开发效率低下。
发明内容
为了解决上述技术问题,本发明提供了一种基于JSF的WEB端组件敏捷开发方法。
为了达到上述目的,本发明所采用的技术方案是:
一种基于JSF的WEB端组件敏捷开发方法,包括以下步骤,
步骤一,分析应用软件界面中对复杂组件的使用;
所述复杂组件包括表格、树和PanelMenu;
步骤二,通过抽象的类和接口,将具体内容存在差异数据对象抽象为统一的抽象基类或接口;
步骤三,利用反射及注入技术,为复杂组件提出了若干通用的组件模型;
步骤四,在开发时,将模型类实例化,定义实例化的变量。
通用的组件模型有5个,包括基于任意JavaBean对象列表的表格数据提供器ObjectListTableProvider、基于Hashmap映射列表的表格数据提供器HaspMapListTableProvider、基于同构节点对象的树模型CommTreeModel、基于异构节点对象的树模型FreeTreeModel和PanelMenu菜单模型。
所有通用组件模型被封装在一个jar包中。
ObjectListTableProvider为固定的栏目的表格提供属性绑定、方法绑定及数据处理方法。
HaspMapListTableProvider从用户提供的映射列表中提取数据,为不固定栏目的表格组件提供属性绑定、方法绑定及数据处理方法。
CommTreeModel为节点都是一类对象的树提供了属性、方法及事件的绑定;树中所有节点对象都必须实现ITreeNodeObjectable接口。
FreeTreeModel为各个层次节点对象都不是同一类对象,即父层次是一类对象,子层次是另一类对象的树提供属性、方法及事件的绑定;树中所有节点对象都必须实现IFreeTreeNodeAble接口。
PanelMenu菜单模型根据实现了IMenuItem接口的对象列表动态创建PanelMenu菜单,并将菜单选择事件和方法传递给每个菜单项。
本发明所达到的有益效果:本发明大大简化了复杂组件在应用软件的使用,大大提高基于JSF的WEB端软件开发的敏捷性。
附图说明
图1为本发明流程图。
图2为固定栏目的表格提供器ObjectListTableProvider原理框图。
图3为不固定栏目的表格提供器HaspMapListTableProvider原理框图。
图4为同构树模型CommTreeModel原理框图。
图5为自由树模型FreeTreeModel原理框图。
图6为通用PanelMenu菜单模型原理框图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图1所示,一种基于JSF的WEB端组件敏捷开发方法,包括以下步骤:
步骤一,分析应用软件界面中对复杂组件的使用;复杂组件包括表格、树和PanelMenu。
步骤二,通过抽象的类和接口,将具体内容存在差异数据对象抽象为统一的抽象基类或接口。
步骤三,利用反射及注入技术,为复杂组件提出了若干通用的组件模型。
步骤四,在开发时,将模型类实例化,定义实例化的变量。
上述通用的组件模型有5个,都被封装在一个jar包中,包括基于任意JavaBean对象列表的表格数据提供器ObjectListTableProvider、基于Hashmap映射列表的表格数据提供器HaspMapListTableProvider、基于同构节点对象的树模型CommTreeModel、基于异构节点对象的树模型FreeTreeModel和PanelMenu菜单模型。
如图2所示,ObjectListTableProvider为固定栏目的表格提供属性绑定、方法绑定及数据处理方法。
ObjectListTableProvider是一个Java包装类,表格的一行由一个自定义的JavaBean对象承载,表格的每一个栏目对应于对象的一个属性,JavaBean对象必须继承AbstractBaseBean,AbstractBaseBean为抽象的一个基类,通过UUID为自定义JavaBean对象提供了唯一的内部标识,在自定义的JavaBean对象中实现表格中主键是否相同判别,这样的Javabean对象列表通过ObjectListTableProvider中的方法追加或设置到提供器的数据列表中,为JSF表格组件提供数据绑定。ObjectListTableProvider提供了一系列的方法和属性实现表格组件的各种绑定及数据处理方法,(包括:数据的增、删、改方法,数据选择绑定方法,获取表格中被选择的数据行数及对象列表方法等)大大提高了软件的重用性,大大简化了表格的开发代码。
如图3所示,HaspMapListTableProvider从用户提供的映射列表中提取数据,为不固定栏目的表格组件提供属性、方法绑定及数据处理方法。
当开发通用的数据表格界面时,由于面对不同的数据表具有不同的栏目,数据表不同,数据栏目或多或少,对于一个通用的表格来说,无法用一个事先定义好的JavaBean对象来承载数据,使用一个HashMap映射列表为提供器提供数,表格中一行数据对应一个<字段名称,通用字段对象>的HashMap映射,通用字段对象是一个可以承载各种数据库各种字段的对象,包括:字段名称(fieldName)、字段类型(fieldType)、字段描述、是否需要显示、是否主键字段、显示长度及各种类型的字段数据stringField、dateField、intField、timestampField、bytes、blobField、doubleField等。
如图4所示,CommTreeModel为节点都是一类对象的树提供了属性、方法及事件的绑定;树中所有节点对象都必须实现ITreeNodeObjectable接口。
如果一个树中的节点都是同一个对象类型,该树就是基于同构节点对象树。树节点对象是实现了ITreeNodeObjectable接口的用户自定义对象,通过分级代码反映了树节点对象所在树的层次,例如:00是第一层第一个节点,01是第一层第二个节点,依次类推;00-00是第一层第一个节点的子节点中的第一个节点,00-01是第一层第一个节点的子节点中的第二个节点;依次类推。不同层次的节点编号使用“-”或“.”分隔,00-01和00.01是一样的。实现了ITreeNodeObjectable接口用户自定义对象列表,通过CommTreeModel的方法设置到树模型中,为树组件提供数据绑定。CommTreeModel为树组件提供了数据、选择事件、方法绑定,也提供了各种树操作的方法。简化了软件开发人员对树的组件使用,提高了开发效率。
如图5所示,FreeTreeModel为各个层次节点对象都不是同一类对象,即父层次是一类对象,子层次是另一类对象的树提供属性、方法及事件的绑定;树中所有节点对象都必须实现IFreeTreeNodeAble接口。
如果树的不同层次节点对象不是一个类型的对象,那么可以使用FreeTreeModel成为树组件的提供器,树中父层次的节点对象和子层次的节点对象不是同一类对象,树中每个节点中对象是实现IFreeTreeNodeAble接口的用户自定义对象,由于不同层次的节点对象都是不同类型的对象,因此不存在分级代码,通过FreeTreeModel中的方法可向树根或任意层次添加节点,一次只能向树的一个层次中添加节点,可实现树的节点的修改和删除。
如图6所示,PanelMenu菜单模型根据实现了IMenuItem接口的对象列表动态创建PanelMenu菜单,并将菜单选择事件和方法传递给每个菜单项。
Menu_level_no反映了每一个菜单项的层级,00为第一层第一个菜单项,01为第一层第二个菜单项,00-00为第二层第一个菜单项,00-01为第二层第二个菜单项等等,依此类推。通过模型中的方法,根据实现了IMenuItem接口的对象列表动态创建PanelMenu菜单,并将菜单选择执行java方法actionMethod和JavaScript方法onCompleteScript传递给每一个菜单项。
上述方法大大简化了复杂组件在应用软件的使用,大大提高基于JSF的WEB端软件开发的敏捷性。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种基于JSF的WEB端组件敏捷开发方法,其特征在于:包括以下步骤,
步骤一,分析应用软件界面中对复杂组件的使用;
所述复杂组件包括表格、树和PanelMenu;
步骤二,通过抽象的类和接口,将具体内容存在差异数据对象抽象为统一的抽象基类或接口;
步骤三,利用反射及注入技术,为复杂组件提出了若干通用的组件模型;
步骤四,在开发时,将模型类实例化,定义实例化的变量;
通用的组件模型有5个,包括基于任意JavaBean对象列表的表格数据提供器ObjectListTableProvider、基于Hashmap映射列表的表格数据提供器HaspMapListTableProvider、基于同构节点对象的树模型CommTreeModel、基于异构节点对象的树模型FreeTreeModel和PanelMenu菜单模型。
2.根据权利要求1所述的一种基于JSF的WEB端组件敏捷开发方法,其特征在于:所有通用组件模型被封装在一个jar包中。
3.根据权利要求1所述的一种基于JSF的WEB端组件敏捷开发方法,其特征在于:ObjectListTableProvider为固定的栏目的表格提供属性绑定、方法绑定及数据处理方法。
4.根据权利要求1所述的一种基于JSF的WEB端组件敏捷开发方法,其特征在于:HaspMapListTableProvider从用户提供的映射列表中提取数据,为不固定栏目的表格组件提供属性绑定、方法绑定及数据处理方法。
5.根据权利要求1所述的一种基于JSF的WEB端组件敏捷开发方法,其特征在于:CommTreeModel为节点都是一类对象的树提供了属性、方法及事件的绑定;树中所有节点对象都必须实现ITreeNodeObjectable接口。
6.根据权利要求1所述的一种基于JSF的WEB端组件敏捷开发方法,其特征在于:FreeTreeModel为各个层次节点对象都不是同一类对象,即父层次是一类对象,子层次是另一类对象的树提供属性、方法及事件的绑定;树中所有节点对象都必须实现IFreeTreeNodeAble接口。
7.根据权利要求1所述的一种基于JSF的WEB端组件敏捷开发方法,其特征在于:PanelMenu菜单模型根据实现了IMenuItem接口的对象列表动态创建PanelMenu菜单,并将菜单选择事件和方法传递给每个菜单项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510763205.XA CN105335160B (zh) | 2015-11-10 | 2015-11-10 | 一种基于jsf的web端组件敏捷开发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510763205.XA CN105335160B (zh) | 2015-11-10 | 2015-11-10 | 一种基于jsf的web端组件敏捷开发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105335160A CN105335160A (zh) | 2016-02-17 |
CN105335160B true CN105335160B (zh) | 2018-12-28 |
Family
ID=55285727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510763205.XA Expired - Fee Related CN105335160B (zh) | 2015-11-10 | 2015-11-10 | 一种基于jsf的web端组件敏捷开发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105335160B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3430515B1 (en) | 2016-03-15 | 2021-09-22 | Datomia Research Labs Ou | Distributed storage system data management and security |
US10931402B2 (en) | 2016-03-15 | 2021-02-23 | Cloud Storage, Inc. | Distributed storage system data management and security |
CN112597167A (zh) * | 2020-12-29 | 2021-04-02 | 四川汇安融信息技术服务有限公司 | 一种基于HashMap的多叉树生成方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020019971A1 (en) * | 2000-03-28 | 2002-02-14 | Zygmont David A. | System and method for metaprogramming software development environment |
WO2003038597A1 (en) * | 2001-10-31 | 2003-05-08 | Vitria Technology, Inc. | Integrated business process modeling environment and models created thereby |
CN1834906A (zh) * | 2005-03-15 | 2006-09-20 | 微软公司 | 丰富数据绑定应用程序 |
CN103268227A (zh) * | 2013-05-21 | 2013-08-28 | 上海吉贝克信息技术有限公司 | 基于extjs的bi平台快速开发的方法 |
CN104298512A (zh) * | 2014-10-10 | 2015-01-21 | 南京莱斯信息技术股份有限公司 | 一种基于OSGi标准的功能组件式集成开发系统 |
-
2015
- 2015-11-10 CN CN201510763205.XA patent/CN105335160B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020019971A1 (en) * | 2000-03-28 | 2002-02-14 | Zygmont David A. | System and method for metaprogramming software development environment |
WO2003038597A1 (en) * | 2001-10-31 | 2003-05-08 | Vitria Technology, Inc. | Integrated business process modeling environment and models created thereby |
CN1834906A (zh) * | 2005-03-15 | 2006-09-20 | 微软公司 | 丰富数据绑定应用程序 |
CN103268227A (zh) * | 2013-05-21 | 2013-08-28 | 上海吉贝克信息技术有限公司 | 基于extjs的bi平台快速开发的方法 |
CN104298512A (zh) * | 2014-10-10 | 2015-01-21 | 南京莱斯信息技术股份有限公司 | 一种基于OSGi标准的功能组件式集成开发系统 |
Non-Patent Citations (3)
Title |
---|
WEB快速应用开发框架的研究;秦长春;《中国优秀硕士学位论文全文数据库》;20090615(第6期);正文第39-42页 * |
一种基于Web的应用系统的通用查询设计与实现;梁正和 等;《第三届江苏计算机大会》;20090626;正文第82-84页 * |
基于JSF框架的权限管理系统的研究与实现;胡乔;《计算机技术与发展》;20101110;第20卷(第11期);正文第7-8页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105335160A (zh) | 2016-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216302B2 (en) | Modifying task dependencies at worker nodes using precompiled libraries | |
Grinberg | Flask web development | |
US10048949B2 (en) | Methods and systems for providing a user interface | |
Sriparasa | JavaScript and JSON essentials | |
CN114662159A (zh) | 一种数据的处理方法、装置及设备 | |
US7739691B2 (en) | Framework for declarative expression of data processing | |
US20050268280A1 (en) | Encapsulating changes to a software application | |
JP2002024079A (ja) | サーバ側制御オブジェクトを用いるデータ結合 | |
CN106372130B (zh) | 一种静态资源管理方法 | |
CN102054217B (zh) | 基于元模型的工具中的实体变形 | |
CN103914290A (zh) | 一种操作命令处理方法及装置 | |
Bejeck | Kafka Streams in Action | |
CN105335160B (zh) | 一种基于jsf的web端组件敏捷开发方法 | |
CN104320312A (zh) | 网络应用安全测试工具及模糊测试用例生成方法和系统 | |
CN101980204B (zh) | 静态网页自动更新方法 | |
Ihrig et al. | Full Stack JavaScript Development With MEAN: MongoDB, Express, AngularJS, and Node. JS | |
US8978046B2 (en) | Interaction between applications built on different user interface technologies | |
US8271442B2 (en) | Formats for database template files shared between client and server environments | |
Miravet et al. | Framework for the declarative implementation of native mobile applications | |
US20190339953A1 (en) | Optimizing a cache of compiled expressions by removing variability | |
Coleman | Data flow sequences: A revision of data flow diagrams for modelling applications using XML. | |
Meadows et al. | Pentaho Data Integration Cookbook | |
CN115842674B (zh) | 适用于云服务多租户隔离的方法及系统 | |
Becker | Learning Azure DocumentDB | |
Furtado et al. | Python Programming Blueprints: Build nine projects by leveraging powerful frameworks such as Flask, Nameko, and Django |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181228 Termination date: 20211110 |