1、 亚信基信基础开开发平台平台AppFrame培培训姓名培培训目目标n了解了解AppFrame的功能的功能n快速掌握使用快速掌握使用AppFrame平台的基本技能平台的基本技能培培训内容内容nAppFrame简介介n平台平台发展展过程和程和应用用n平台体系平台体系结构构nAppFrame主体功能介主体功能介绍n安装配置安装配置n开开发流程流程简介介n配置工具的使用配置工具的使用n页面面组件及使用介件及使用介绍n AIWebFrame登登陆框架框架nAppFrame对OBD的支持的支持n控制台管理控制台管理AppFrame简介介AppFrameAppFrame目目目目标标为为什么要开什么要开什么要
2、开什么要开发发 AppFrame?AppFrame?J2EE是一套比较新的技术,相比原来的C/S结构系统或三(多)层结构系统,在设计、开发、部署方面增加了很多新的特点,相对来说变的比较复杂,因此AppFrame着重解决以下问题:n解决性能问题n统一设计模式n提高开发效率n提供标准组件,降低编码强度n提供稳定的可扩展框架AppFrameAppFrame与与与与J2EEJ2EE的关系的关系的关系的关系nJ2EE是一套标准,是分布式应用程序的运行环境和一套可扩展的javaAPInAppFrame是一个框架,是一个在J2EE标准下开发企业应用的平台,包括API、工具、设计模式nAppFrame的实现采
3、用J2EE标准技术平台平台发展展过程和程和应用用AppFrameAppFrame版本演版本演版本演版本演进进(1 1)nAppframe1.0前台界面展现完全采用DHTML和JavaScript实现,采用XMLHTTP控件与服务进行数据交换。所有数据和控制信息采用XML文档进行传递。优点:界面层与数据层完全分离,功能强大。缺点:所有的界面生成和控制都在IE中完成,导致系统运行效率较低。相关项目:浙江网通业务支撑系统AppFrameAppFrame版本演版本演版本演版本演进进(2 2)nAppframe2.0采用Tag与DHTML、JavaScript相结合来改善系统性能,同时保留1.0中灵活适
4、用的功能。优点:解决了1.0中存在的性能问题,同时在使用的方便性方面得到了较大的改善。相关项目:重庆网通业务支撑系统、海南网通业务支撑系统、上海网通业务支撑系统、浙江网上营业厅系统衍生版本:AppframeForCorba(上海移动门户系统)AppframeForOBD(浙江移动渠道管理系统、移动客服系统。)AppFrameAppFrame版本演版本演版本演版本演进进(3 3)nAppframe3.0合并Appframe2.0、AppframeForCorba、AppframeForOBD的版本;增加系统运行期监控功能;增加套打组件、数据报表组件等;加强安全性控制;AppFrameAppFra
5、me版本演版本演版本演版本演进进(4 4)nAppframe3.1、Appframe3.2、Appframe3.3n在Appframe3.0版本的基础上又相继发布3.1、3.2、3.3版本,其主要目的是为了满足各个项目实际使用中的需求,而整合了一些新功能或者是修正了一些问题,或者是在性能上进行了调整。AppFrameAppFrame版本演版本演版本演版本演进进(5 5)n而而AppFrame5.0版本在版本在结构作出了重大的构作出了重大的调整,以下整,以下几点几点总结了了该版本版本对于系于系统开开发所所带来的好来的好处:提供符合SOA体系结构、组件化的开发框架,降低业务系统耦合性提供稳定易扩展
6、的基础组件,提升系统开发效率和稳定性提供系统全方位的跟踪监控机制,提升系统问题的快速定位能力提供与权限系统的无缝连接使业务系统的构建是一个自顶而下的可持续改善的过程提供统一的开发模式,使开发维护易于管控提供开发与部署无关的机制,降低开发复杂度,提升系统部署灵活性使企业的软件资产具有继承性和可管理性AppFrameAppFrame版本演版本演版本演版本演进进(6 6)nAppFrame5.5版本版本nAppFrame5.5版本版本对平台的平台的标准版本和河南版本准版本和河南版本做了融合,其目的在于整合两个版本的做了融合,其目的在于整合两个版本的优秀元素,秀元素,将将这两个版本好的特性集成到一个版
7、本中,将其高两个版本好的特性集成到一个版本中,将其高配置性、高效率性、高配置性、高效率性、高稳定性和高性能的特定性和高性能的特质带入入到新版本中,提供一个更加完善的平台技到新版本中,提供一个更加完善的平台技术框架。框架。nAppFrame河南版本河南版本经过河南移河南移动BOSS3.0项目的目的淬淬炼,已,已经被被证实它的高它的高稳定性和高性能,能定性和高性能,能够很很好的支撑好的支撑5千万的用千万的用户量,所以量,所以这次融合将平台河次融合将平台河南版本的底南版本的底层实现引入,以后引入,以后续更好的支撑大型更好的支撑大型业务应用系用系统。平台体系平台体系结构构术语术语定定定定义义(一)(一
8、)(一)(一)nSession:存储特定用户会话所需的信息,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。nO/R mapping(Object Relational Mapping):java对象和数据库对象之间的映射,通过O/Rmapping实现java对象对数据库的透明访问。nXML文档:文档:符合xml规范的文本,在APPFrameV3.0中,xml文档通常用于数据交互。nDataModel:数据模型,即J2EE设计模式M-V-C中的M,又称model。nRowSet:结果集,由此派生出FormRowSet、Tabl
9、eRowSet等。nNormalRowSet:通用结果集,是不可视的结果集,有它自己的js的构造方式术语术语定定定定义义(二)(二)(二)(二)nBO(business object):BO定义了业务对象数据的来源、数据属性以及业务对象的操作与关联。BO通过configtools配置工具配置生成,包含一个.bo文件和3个自动生成的.java文件,3个文件分别是xxBean.java、xxEngine.java、IxxValue.java。nSET:configtools配置生成一个.set文件,定义了web页面的数据来源、展示的格式。nDS数据源(数据源(data source):ds定义了页
10、面显示的下拉列表数据源,具体表现为使用configtools配置生成一个.ds文件。nDataContainer:数据容器,APPFrameV5.0中传递和处理数据的基本类。AppFrameAppFrame在系在系在系在系统统中的位置中的位置中的位置中的位置系系系系统总统总体构架体构架体构架体构架n nSecFrameSecFramen n权权限管理限管理限管理限管理n nAppMoitorAppMoitorn n应应用管控用管控用管控用管控SOASOA体系架构体系架构体系架构体系架构nDB数据库、CORBA、EJB等n逻辑层(JService)n数据操纵层n(JService)n数据层nUI
11、层n逻辑功能n功能点1n功能点2系统各层间全部通过服务进行调用服务之间的依赖通过依赖注入的模式来实现。服务的部署方式包括:POJO、EJB、WEBSERVICE、CORBA服务的部署方式与调用者和实现者都无关提升开提升开提升开提升开发发效率效率效率效率Web端提供了稳定的UI组件和前后台的数据交付方式,提高前台web开发效率DBGrid、DBForm、DBTree、AITab等自动实现前台数据展现和后台业务数据对象的自动转换增强的JSP编辑器和项目自定义模板加快jsp的开发效率通过服务注册管理机制和AppframeDeploy可以屏蔽系统部署对开发的影响系统的最后部署模式与开发无关,降低了开发
12、人员的技能要求提高了系统开发调试的速度事务控制的配置化管理从原来的业务逻辑中抽离了事务控制,简化了系统逻辑。减少了代码层次和代码量。提高了系统开发调试的速度业务过程实现了详细设计与开发的同步,避免设计和开发的脱节,提高了开发效率OPFrame实现了O-RMapping,通过配置实现了数据存储的自动化,提高了系统开发效率数据持久化数据持久化数据持久化数据持久化层层管理管理管理管理结结构构构构数据库连接池管理(监控连接的申请和关闭)自定义数据库连接池JNDI数据库连接池ConfigTool进行BO对象定义,并自动产生相关对象文件BO对象定义信息数据持久化管理数据库CORBAOBD数据对象业务逻辑层
13、界面控制界面控制界面控制界面控制层结层结构构构构ConfigTool进行SET、DS对象定义SET对象定义信息,DS对象定义信息界面展现控制层HTML输出TAG对象JSP文件业务逻辑层局部HTML输出(XmlHttp)用户操作Action请求AppFrame主体功能介主体功能介绍数据持久数据持久数据持久数据持久层层管理管理管理管理数据持久化就是通过序列化或者保存到数据库的方式保存对象的状态和数据。nBO对象*Bean.java(数据包装类):是DataContainer类的子类,封装了表的每个记录行,并提供get/set方法。*Engine.java(基本操作引擎类):包含getSysTime
14、、getNewId、getCount、getBeans、save等基本方法.I*Value.java(业务接口类):接口类,在使用配置工具时可选择是否生成。若生成,*Bean则需要implements这个接口业务逻辑层业务逻辑层n数据枚举服务:static/sql/BO/function/service5种类型n对象唯一标识IDgeneratorn数据源管理DBDataSourceSelfJNDIn对象存储管理DataStorenSessionManager和ServiceManagern数据对象容器DataContainern日志处理:log4j界面管理界面管理界面管理界面管理层层功能功能功
15、能功能n可视化的界面元素定义数据类型:数据长度,校验方式展现方式:DBEdit、DBListBox、DBLabel、DBChecbox、DBDate数据选择来源:下拉数据源选择、动态关联参数设置编辑状态:是否可编辑n根据定义自动生成前台需要的数据集TableRowSetFormRowSetNormalRowSetn自动将前台返回的数据转换为标准的数据对象Bean将一个前台数据集自动拆分为多个后台数据对象数组界面界面界面界面对对象元素象元素象元素象元素nDBFormnDBGridnDBTreenPopMenunDBListBoxnTabn日历控件n安装配置安装配置环环境要求境要求境要求境要求nJ
16、DK1.4或以上版本,确认已经被加入到本机环境变量classpathn开发IDE:Jbuilderxtomcat4.1n浏览器IE6.0或以上版本nWebServer/AppServer:如果程序需要发布到weblogic,需要weblogic7.0以上版本,如果发布到webSphere,需要webSphere5.0以上版本;开发阶段使用JBuilderx自带的tomcat4.1n数据库oracle8.1.2以上版本,相应的jdbc版本。创建APPFrameV5.0必须的数据库表sys_id_generator工程配置(一)工程配置(一)工程配置(一)工程配置(一)通常,基于APPFrameV
17、5.0开发一个工程,第一级目录结构为:nsrc:存放java源码及配置工具configtools自动生成的java源码及set、ds、view、bo等配置工具生成的文件nhtml:webmodel目录,也可以为webmodel取另外一个名字,在这个目录下存放页面文件html、jsp、js等源码nlib:类库,appframe.jar及其他第三方jar包*注意:注意:ConfigTool所在的目所在的目录在路径中不能含有中文,因在路径中不能含有中文,因为ConfigTool在加在加载的的时候需要候需要读取取jsptemplate模版,而模版,而这个个模版模版现在在还不支持中文不支持中文工程配置(
18、二)工程配置(二)工程配置(二)工程配置(二)配置文件配置文件AIConfig.xml的的说明明n文件中定义了APPFrameV5.0框架中各个模块的管理器;还有CrossGrid,DBTreeNew的相关配置信息nAIConfig.xml文件要求能通过ClassPath搜索获得。n如果APPFrameV5.0框架中没有或缺少某一个模块的实现包,需要在此配置文件中注释掉对应的数据行。例如:aisystem.iniUserDataSource 开开发流程流程简介介开开开开发发流程流程流程流程简简介介介介第一步:界面开第一步:界面开第一步:界面开第一步:界面开发发界面主要是jsp、html以及js
19、文件,开发分为两步:n使用configtool完成bo、set、ds配置及生成相关java文件n按照jsp的语法规范,完成jsp的编写注意注意:在编写jsp代码的时候,别忘了包含对APPFrame提供的js文件、css文件的引用如果只是数据查询而且是使用缺省DataModel(缺省DataModel是APPFrame提供的数据集获取方法,与此对应的还有自定义model),只要上面的工作就可以,如果应用涉及对数据库的新增、修改、删除操作,就需要进入第二步:界面控制第二步:界面控制第二步:界面控制第二步:界面控制第二步:界面控制n界面控制层需要写一个servlet,这个servlet必须继承Bas
20、eAction类。n这个servlet做业务逻辑的判断,决定调用哪个javaclass或者EJB进行业务逻辑处理。nAPPFrame提供了数据保存的一个缺省实现com.ai.appframe2.web.defaultAction来实现新增、修改、删除操作的保存。在页面开发时指定这个类的方法作为保存方法就可以。前提是要保存的数据对应着一个或几个表BO,这几个表BO之间没有关联关系。n对一些逻辑关系复杂的表BO,还是需要自己写servlet。第三步:持久第三步:持久第三步:持久第三步:持久层层开开开开发发 n使用配置工具configtool完成BO的配置,自动生成BO相应的java文件第四步:第四
21、步:第四步:第四步:业务逻辑业务逻辑开开开开发发n进行业务逻辑开发,也就是写javaclass或者EJB的过程,在此过程中,需要使用配置工具自动生成的java文件。n在配置工具生成的3个java文件中,使用xxEngine.java的save()方法来实现保存。同时这个类还提供getNewID()、getSysTime()、getBeans()等常用方法。第五步:第五步:第五步:第五步:联调联调程序程序程序程序n完成第一到第四步就可以进行最后的调试配置工具的使用配置工具的使用配置工具配置工具配置工具配置工具ConfigtoolConfigtoolConfigtool作为APPFrame开发平台
22、的不可或缺的重要部分,主要提供以下功能:n数据源管理连接数据库的方式nBO配置BO对象,来自表、视图、sqlnSet配置页面数据的格式、来源nDS配置下拉框的数据来源n代码自动生成根据BO生成的java文件nOBD接口文件转换到BO文件(开发OBD环境的应用时使用)nJSP代码的快速编辑数据源管理(数据源管理(数据源管理(数据源管理(1 1)数据源管理提供新增、修改、删除数据源的功能。界面如下所示:数据源管理(数据源管理(数据源管理(数据源管理(2 2)n数据源名称:数据源唯一标识n数据源类型:有两种,SELF和JNDISELF用标准的JDBC连接数据库JNDI通过应用服务器的connecti
23、onpool来连接数据库n注意:系统默认数据源命名为“UserDataSource”通过配置工具生成的数据源定义文件在工程目录config下aisystem.xml中,其中psd密码是经过加密的BO(BO(业务对业务对象象象象)管理(管理(管理(管理(1 1)nBO的创建根据数据库表结构生成BO根据sql查询生成BO根据OBD接口文件生成BOnBO多表关联BO(BO(业务对业务对象象象象)管理(管理(管理(管理(2 2)n新建BO界面如下:BO(BO(业务对业务对象象象象)管理(管理(管理(管理(3 3)n配置BO属性如下所示:SET(SET(界面数据界面数据界面数据界面数据)配置管理配置管理
24、配置管理配置管理(1)(1)n可视化的界面元素定义数据类型:数据长度,校验方式展现方式:DBEdit、DBListBox、DBLabel、DBChecbox、DBDate数据选择来源:下拉数据源选择、动态关联参数设置编辑状态:是否可编辑n根据定义自动生成前台需要的数据集TableRowSetFormRowSetNormalRowSetn自动将前台返回的数据转换为标准的数据对象Bean可以将一个前台数据集自动拆分为多个后台数据对象数组SET(SET(界面数据界面数据界面数据界面数据)配置管理配置管理配置管理配置管理(2)(2)n支持的前台校验数据类型StringDateDateTimeFloat
25、IntegerEmailPostcoden支持项目进行数据类型的定义扩展例如:地址、客户经理、组织SET(SET(界面数据界面数据界面数据界面数据)配置管理配置管理配置管理配置管理(3)(3)n新增SET,需要选择BO来生成,界面如下:SET(SET(界面数据界面数据界面数据界面数据)配置管理配置管理配置管理配置管理(4)(4)n修改Field的属性SET(SET(界面数据界面数据界面数据界面数据)配置管理配置管理配置管理配置管理(5)(5)n高级设置设置在页面显示的一些“是否可视、顺序”等属性。DS(DS(数据枚数据枚数据枚数据枚举举)配置管理(配置管理(配置管理(配置管理(1 1)页面数据
26、源是为界面的DBListBox下拉列表框提供数据,DS支持5类数据来源:n静态数据:直接在DS配置中定义显示的数据nBO数据:通过BO结合条件来查询数据nSQL数据:通过自定义的SQL语句查询数据nFunction数据:通过自己写java方法查询数据作为数据源nService数据:通过指定服务ID和实现服务接口作为数据源DS(DS(数据枚数据枚数据枚数据枚举举)配置管理(配置管理(配置管理(配置管理(2 2)n新建DS文件后,配置界面如下:JSPJSP页页面面面面辅辅助助助助编辑编辑器器器器(1)(1)JSPJSP页页面面面面辅辅助助助助编辑编辑器器器器(2)(2)n使用模板快捷的创建新JSP
27、文件n方便快捷的TAG类属性编辑n对特殊的数据控件(Grid,Form)进行方便的排版编辑n方便的JavaScript编辑定位和查找n提供清晰的页面布局分区页面面组件及使用介件及使用介绍前台界面控件前台界面控件前台界面控件前台界面控件nDBGridnDBFormnDBTreenPopMenunDBListBoxnDBTabn DBGridDBGridnDBGrid是一个非常有用的页面组件,以表格方式展现数据,主要用来展示查询的数据结果,或者进行简单的数据维护。n一个DBGrid的样式如下:DBGridDBGrid实现实现原理原理原理原理nDBGrid是一个表单组件,根据需要通过GridData
28、ModelInterface(表格数据模型)接口的实现类得到结果集,将结果集以DBGrid的形式进行显示。n使用时需要在jsp文件中使用tag标签定义表格的显示方式。n结果集生成方式:n平台提供默认的DefaultDataModel用来生成结果集n通过使用ActionDataModel,指定具体的类和方法来生成结果集。n通过自定义DBGridDataModelInteface接口的实现类来构造自定义的GridDataModel。n通通过使用使用MethodModelForService或者或者QueryModelForService,以服以服务的方式生成的方式生成结果集(推荐使果集(推荐使用)
29、用)n通过DBGrid组件展现数据时,需要通过configtools配置生成的页面数据源set。DBGridDBGrid接口接口接口接口说说明(明(明(明(1 1)nTable标签选项通常,在一个jsp文件中,table标签使用方法如下:DBGridDBGrid接口接口接口接口说说明(明(明(明(2 2)njs对象象TabelRowSet支持的事件支持的事件OnRowFocusChange:行焦点改变事件OnCellFocusChange:单元格焦点改变事件OnValueChange:单元格值改变事件OnGridDbClick:双击事件,当DBGrid标签的editable设置为true时,不
30、响应此事件。OnContextMenu:鼠标右键事件OnBeforeTurnPage:翻页前触发事件OnAfterTurnPage:翻页后触发事件OnRowSelected:行选中触发事件DBGridDBGrid接口接口接口接口说说明(明(明(明(3 3)njs对象象g_TableRowSetManagerg_TableRowSetManager对象是APPFrameV3.0内建的表格数据集管理器,对页面内的所有表格对象进行管理。g_TableRowSetManager在页面加载时自动构建。方法方法说明:明:nGet(pk):参数pk为DBGrid唯一标识tableID,通过该方法获得DBGr
31、id表格数据集的引用。nPush(SetName):参数SetName为页面数据源set名称,该方法向管理器中增加一个表格数据集。nRemove(pk):删除一个表格数据集对象。使用范例:使用范例:varstaff_grid=g_TableRowSetManager.get(“staff”);varcurRow=staff_grid.getRow();DBGridDBGrid接口接口接口接口说说明(明(明(明(4 4)njs对象象TabelRowSet提供的方法提供的方法js文件名:jsv2/TableRowSet.js设置DBGrid组件的外观的方法,经常采用平台默认的设置,很少通过以下方法
32、做修改。nsetEditSts(value):设置表格的编辑状态nsetRowEditSts(rowIndex,value):根据行号设置行的可编辑属性ngetRowEditSts(rowIndex):根据行号获取行可编辑属性nsetColEditSts(colIndex,value):根据列名设置列的可编辑属性nsetTableBgColor(color):设置表格的背景颜色,参数color类似”#ffff0000”nsetCurRowBgColor(color):设置表格的当前行背景颜色nsetRowBgColor(rowIndex,color):设置指定行的背景颜色n DBGridDBG
33、rid接口接口接口接口说说明(明(明(明(5 5)以下是对DBGrid有用操作的方法,对开发人员至关重要。ngetRow():获取当前行号,返回一个整数,第一行行号为0。nsetRow(rowIndex):设置当前行号,rowIndex为整型。ngetCol():获取当前列号,返回整数,第一列列号为。nsetFocus(rowIndex,colIndex):将焦点设置到指定的单元格上nsetFocusByName(rowIndex,colName):将焦点设置到指定的单元格上n(具体具体见demo工程或操作手册工程或操作手册)n使用范例:使用范例:var staff_grid=TableRow
34、SetManager.get(“staff”);staff_grid.refresh(“code=”+staff_code);/查询code 为staff_code 的记录var curRow=staff_grid.getRow();var curCole=staff_grid.getValue(curRow,”name”);/获取当前行name字段的值注意事注意事注意事注意事项项n在编写页面jsp文件时需要,APPFrameV5.0的includedhead.jsp中没有引入相关组件的js文件,所以编写页面时,要使用某种组件,需引入相关的js文件,如下:scriptlanguage=Java
35、Script“src=/jsv2/TableRowSet.js n初始化一个DBGrid时,可以通过页面上下文pageContext设置初始化condition,condition中的参数可以是静态的也可以是动态的。最好是初始化DBGrid为空,获取参数后使用refresh()方法查询数据。n如果某列没有使用标签定义,则TableRowSet的getValue()、getDisplayText()方法不能使用,如果需要使用但又不希望显示这些列,可以使用标签的visible=”false”属性。练习练习case1case1n新建AppFrame工程n以表organize,staff为例,用con
36、figtools配置生成下列文件以及相关java文件:organize.bo,organize.set(其中organezetype为下拉数据源)staff.bo,staff.setn要求:页面显示两个DBGrid:organize和staff,双击organize表格中一条记录,显示organize下相应的staff记录,可以增加、修改、删除staff表格中记录,(并进行保存)。StableStablen为了彻底解决表格的“查询条件过期问题”,在Appframe5.2中增加一个新的表格标签stable,该表格一律采用IE客户端缓存的方式,所以不会存在“查询条件过期”问题。n该表格为原先表格的
37、简化版,不允许用户自定义DataModel。用户可以在页面上指定需要调用的服务ID或者类名、方法名和参数来获取表格数据。下面描述下这个表格新增的几个字段的含义:ninvoke_type:从指定类获取数据的方式,只能写”pojo”或者”service”。”pojo”表示从指定的类获取数据;”service”表示从指定的服务获取数据。ninvoke_name:表示获取数据的类名或者服务名,这个配置项和上述的invoke_type想对应,如果invoke_type为“pojo”,那么该项表示类名,否则表示服务ID。ninvoke_querymethod:获取表格数据的方法,包括方法名、参数类型和参数
38、的名称。例如:getGridData(inta,Stringb,longc)。ninvoke_countmethod:获取表格数据的方法,具体格式同invoke_querymethod。Stable-serviceStable-service方式方式方式方式 n红色标注部分是service的服务ID,根据此ID找到对应的服务接口。Stable-pojoStable-pojo方式方式方式方式 n红色标注的部分为具体的类,将由该类的全路径找到对应的类以及对应的方法。DBFormDBFormnDBForm是一个非常有用的页面组件,主要用来以自由格式Form方式展现数据,通常用于对一条数据的详细信息显
39、示、对一条数据的新增,修改页面中。n一个DBForm的样式如下:DBFormDBForm实现实现原理原理原理原理nDBForm是一个表单组件,将结果集(一条结果)中的每个字段以不同的显示类型(文本框,下拉列表框,文本域,checkbox选择框等)进行显示。n使用时需要在jsp文件中定义一个DBFORM的标签n生成数据集的方式:n平台提供默认的DefaultDataModel用来生成结果集n通过自定义DBFormDataModelInteface接口的实现类来构造自定义的FormDataModeln通过使用ActionDataModel,指定具体的类和方法来生成结果集。n通通过使用使用Metho
40、dModelForService或者或者QueryModelForService,以服以服务的方式生成的方式生成结果集(推荐使果集(推荐使用)用)n通过DBForm组件展现数据时,需要通过configtools配置生成的页面数据源set。DBFormDBForm接口接口接口接口说说明(明(明(明(1 1)n Form标签选项通常,在一个jsp文件中,form标签使用方法如下:TABLE_NAME CH_NAME PARENT_ID DBFormDBForm接口接口接口接口说说明(明(明(明(2 2)njs对象象FormRowSet支持的事件支持的事件onValueChange:field字段值
41、改变事件onFoucsIn:字段获得焦点事件onFoucsOut:字段失去焦点事件DBFormDBForm接口接口接口接口说说明(明(明(明(3 3)n js对象象g_FormRowSetManagerg_FormRowSetManager对 象 是 APPFrameV5.0内 建 的DBForm数据集管理器,对页面内的所有DBForm对象进行管理。g_FormRowSetManager在页面加载时自动构建。方法方法说明:明:nGet(pk):参数pk为DBForm唯一标识formID,通过该方法获得DBForm数据集的引用。nPush(SetName):参数SetName为页面数据源set名
42、称,该方法向管理器中增加一个DBForm数据集。nRemove(pk):删除一个DBForm数据集对象。使用范例:使用范例:varstaff_form=g_FormRowSetManager.get(“staff”);varcurRow=staff_form.getValue(“NAME”);DBFormDBForm接口接口接口接口说说明(明(明(明(4 4)n js对象象FormRowSet提供的方法提供的方法js文件名:jsv2/FormRowSet.js提供对DBForm有用操作的方法,对开发人员至关重要。nsetEditSts(value):设置表格的编辑状态setColEditSts
43、(fieldName,value):根据列名设置列的可编辑性ngetValue(fieldName):获取指定字段的当前数据值,如果该字段没有使用dbformfield标签显示地定义,则getValue()无法获取字段值。ngetDisplayText(fieldName):获取指定字段的显示值nsetValue(fieldName,Text,value):根据行号,列名设置数据值,value数据值text显示值nnewRow():新增一空白页,nrefresh(condition):FormRowSet刷新,condition条件中不能出现orderby条件。n(具体具体见demo或二次开或
44、二次开发手册手册)注意事注意事注意事注意事项项n在编写页面jsp文件时需要使用Form组件,要引入相应的js文件,例如:n如果某字段没有使用标签定义,则FormRowSet的getValue()、setValue()getDisplayText()方法不能使用,如果需要使用但又不希望显示这些字段,可以使用标签的visible=”false”属性。n页面初始化后,form就有一条空记录,不需要显式调用newRow()来增加一条空记录。练习练习case2case2n要求:页面上显示两个form,都以staff.set为页面数据源。第一个form:初始化为空,(数据录入后并保存)第二个form:根据
45、staff_code进行查询并显示结果。(修改后可以保存)自定自定自定自定义义modelmodel(1 1)n自定义DataModel做为缺省DataModel的补充,提供给开发人员一种不通过缺省DataModel获得后台数据的方法。因此,自定义DataModel主要是为了实现数据查询而使用。n自定义DataModel分为两种:一种用于DBGrid,必须实现DBGridDataModelInterface;一种用于DBForm,必须实现DBFormDataModelInterface。DBGridDBGrid的自定的自定的自定的自定义义ModelModelnDBGrid的自定义Model:必须
46、实现以下3个方法publicvoidinit(ServletRequestrequest,DBGFInterfacepInterface)throwsExceptionpublicintcount()throwsExceptionpublicObjectgetGridData(intstartRowIndex,intendRowIndex)throwsException DBFormDBForm的自定的自定的自定的自定义义ModelModel nDBForm的自定义Model:必须实现以下2个方法publicvoidinit(ServletRequestrequest,DBGFInterfac
47、eInterface)throwsExceptionpublicObjectgetFormData()throwsException注意事注意事注意事注意事项项n使用自定义model之后,和标签中的conditionname,parametersname属性就没用了n调用refresh方法传递的参数必须使用“”,如果需要使用其他运算符,可以通过将条件做为一个字符串赋值给一个参数,在后台JAVA代码中进行处理。例如:%pageContext.getRequest().setAttribute(staff_id,n在使用Form自定义model时,根据条件查出来的结果集必须只有一条记录,否则后台会
48、抛出异常MethodModelForServiceMethodModelForServicen标签中的属性tablemodel或者标签中的属性datamodel默认使用model:com.ai.appframe2.web.datamodel.MethodModelForServicen属性implservice_name设置在服务配置文件.xml中配置的服务ID或者接口类全路径n属性implservice_querymethod设置服务接口中的查询方法n属性implservice_countmethod设置服务接口中的返回记录数的方法n实现原理:通过MethodModelForService这
49、个定义好的model,根据implservice_name中设置的服务ID找到定义好的服务,执行implservice_querymethod中设置的方法,获取数据集n前台刷新方法:varstationTypeRowSet=g_TableRowSetManager.get(tblStationType);varcond=domainId=+domainId+&orgRoleTypeId=+curRoleId;stationTypeRowSet.refresh(cond);其中其中implservice_querymethod中中设置的方法是置的方法是带全参数的,全参数的,refresh方法中的
50、参数名完全匹配方法中的参数名完全匹配implservice_querymethod中中设置置的参数名的参数名QueryModelForServiceQueryModelForService(1 1)n标签中的属性tablemodel或者标签中的属性datamodel默认使用model:com.ai.appframe2.web.datamodel.QueryModelForServicen属性implservice_name设置在服务配置文件.service中配置的服务IDn属性implservice_querymethod设置服务接口中的查询方法n属性implservice_countmeth