版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、同一页面下增删改查的开发步骤一、准 备工作动态页面已经做好,实体类已经创建完成。二、实 现1. 添加、修改使用不同 panel1) 修改实体类加入 Name 注解2) 添加 action 类,实现添加功能i. 使用普通 javabean,加入 Name 注解,加入 Scope(ScopeType.PAGE)使用 PAGE 生命周期。ii. 声明控制 panel 显示的 boolean 类型值。iii. 声明实体类对象,对象使用 In(required=false) Out(required=false) 注解。iv. 加入添加按钮方法。要进行连续添加,所以要使用长会话。在打开添加panel 的
2、方法上加入 Begin 注解。开启长会话。v. 加入添加提交方法 (添加 panel 的 submit 按钮)。提交后重新 new 一下此实体对象 用于清空页面上输入的值。此方法不是 End 方法。vi. 添 加 panel 的 cancel 按 钮 没 有 后 台 方 法 , 加 入 oncomplete="Richfaces.showModalPanel('cancel');" ,打开一个 modelpanel 提示用户 真的要退出么。vii. 在 Action 中加入退出添加 panel 的方法。此方法把控制添加 panel 的 boolean 值置f
3、alse。重新渲染此区域。此方法要加入End注解。用于结束长会话。3) 实现修改功能i. 声明控制 panel 显示的 boolean 类型值。ii. 声明实体类对象,对象使用 In(required=false) Out(required=false) 注解。iii. 加入修改按钮方法,要进行传值,所以要使用长会话,在打开修改panel 的方法上加入 Begin 注解,开启长会话。方法有参数。iv. 加入修改提交方法 (修改 panel 的 submit 按钮)。此方法提交成功后会关闭 panel。 所以如果正常执行此方法,要关闭长会话。此处不能用 End 注解。因为验证不通 过,用户想继续
4、修改信息,再进行提交。所以要使用 Conversation API 函数在正常 流 程 中 结 束 此 长 会 话 。 Conversation conversation = Conversation.instance();conversation.end(true);v. Cancel 按钮与添加功能的一样。4) 实现删除功能i. 加入删除按钮方法,要进行传值,所以要使用长会话,方法有参数。加入 Begin 注解。ii. 加入 modelpanel 中点击删除确定的方法。 此方法是结束长会话方法使用 End 注解。iii. onclick ="Richfaces.hideModal
5、Panel('del')" 并且关闭 modelpanel 。5) 页面实现i. 使用 a4j:outputpanel 把添加和修改区域都包裹住。添加区域再使用一个outputpanel ,修改区域使用一个 outputpanel ,两个 outputpanel 都定义 rendered 属性, 用来实现其 隐藏。 < a4j:outputPanelid ="addPanel"rendered ="#reasonCodesMaintainAction.addPanel" >ii. 把页面与后台值绑定。2. 添加、修改
6、使用同一 panel1) 修改实体类加入 Name 注解2) 添加 action 类,实现添加功能i. 使用普通 javabean,加入 Name 注解,加入 Scope(ScopeType.PAGE)使用 PAGE 生命周期。ii. 声明控制 panel 显示的 boolean 类型值。声明显示提交添加按钮和修改按钮的 boolean 类型值, 绑定到按钮的 rendered 属性。 通过点击列表的添加按钮还是修改 按钮来控制显示哪个按钮。iii. 声明实体类对象,对象使用 In(required=false) Out(required=false) 注解。iv. 加入添加按钮方法。要进行连
7、续添加,所以要使用长会话。在打开添加panel 的方法上加入 Begin 注解。开启长会话。v. 加入添加提交方法 (添加 panel 的 submit 按钮)。提交后重新 new 一下此实体对象 用于清空页面上输入的值。此方法不是 End 方法。vi. 添 加 panel 的 cancel 按 钮 没 有 后 台 方 法 , 加 入 oncomplete="Richfaces.showModalPanel('cancel');" ,打开一个 modelpanel 提示用户 真的要退出么。vii. 在 Action 中加入退出添加 panel 的方法。此方法
8、把控制添加 panel 的 boolean 值置false。重新渲染此区域。此方法要加入End注解。用于结束长会话。3) 实现修改功能与添加 panel 用的是同一个对话框绑定的是相同的后台变量。只要在点击修改按钮时, 对绑定的变量进行赋值其它与在不同 panel 下进行修改时一样的。4) 实现删除功能与不同 panel 下进行修改相同。三、补充1) 在进行ajax局部刷新时,即使没有指定刷新被<a4j:outputPanelajaxRendered="true">包裹的部分,也会进行刷新,解决方法是在每个进行ajax刷新的标签上加入limitToList =&
9、quot;true" 属性,此时如果没指定刷新<a4j:outputPanelajaxRendered="true">,它不会自己进行刷新。2) 在点击添加或修改按钮时,弹岀panel ,此时需要把除弹岀panel外的其他按钮全部禁用。方法是声明一个boolean类型的变量,绑定到各个按钮的disabled 属性上,在点击添加(修改)按钮时,把变量置成true ,在关闭panel的方法上把变量置成false,重新渲染各个区域。3) 去除输入框开头结尾的空格。Stri totype.trim =fun cti on()return this
10、.replace(/(As*)|(s*$)/g,"");;fun cti on test()var a ;a=docume nt.getEleme ntByld('formAdd:reas on Code_AddDecorate:reas onCode_Add' ).value.trim();docume nt.getEleme ntByld('formAdd:reas on Code_AddDecorate:reas on Code_Add' ).value=a;formAdd:reaso nCode_AddDecorate:reaso n
11、Code_Add为绑定输入框的 ID示例代码:<li >Reason Code </ li ><li >< s:decorate id ="reasonCode_AddDecorate"template="/template/i nputBoxValidati on. xhtml"><ui:defi ne n ame ="i nputText"><h:i nputText id ="reas on Code_Add"on keydow n =&quo
12、t;if(eve nt.keyCode=13)blur();"on cha nge ="test();"size ="10"value = "#reas on CodesMa intain Acti on .reas on Codes.reas on Code" styleClass ="text-i nput"required= "2" >reRe nder="true"maxle ngth<a4j:support eve nt ="on b
13、lur"="reas on Code AddDecorate"limitToList= "true"ajaxSi ngle= "true" bypassUpdates </ h:inputText</ ui:define ><ui:defi ne= "true" />n ame ="outputName"<h:outputText value ="Reas on Code,"/></ ui:define</ s:
14、decorate></ li >这样在失去焦点时就会把输入字符串的首尾空格全部去掉。4)点击表头排序<rich:colu mn ><a4j:comma ndLink acti on Liste nervalue ="Reas on Code"reRe nderdisabled<f:param</ a4j:commandLink</ rich:column>= "#reaso nCodesMai ntainActi on .sortBy()"="output,datascroller,s
15、c1"="#reasonCodesMaintainAction.button Disabled" n ame ="sortByField">value ="reas on Code"/>f:paramActionpublicrequestParams =里的value 值与实体的变量名相同。里sortBy 方法:void sortBy() FacesC on text.getCurre ntl nsta nee.getRequestParameterMap(); sortByField = (Stri ng) r
16、equestParams .get( "sortByField" if(sortByFieldifO.getExternalCo ntext();.equals( pageParameter (pageParameter pageParameter elsepageParameter else pageParameter pageParameter this . scrollerPage reas on CodesList5)输入页码进行跳转页面<table cellpadd ing<tr >= "0"<td >Total:
17、.getOrder() .setOrder(.setOrder(.getOrderColumn() !="desc" ) "desc");.setOrderColu mn( .setOrder(=1;.refresh();cellspac ingid"asc");sortByField ); "asc");= "5" >= "totalCou nt"<h:outputTextvalue = "#reas on CodesMai ntainActio n.
18、 totalCou nt"<td >< rich:datascrollerid ="datascroller"/></ td >for ="output" maxPages ="5" limitToListalig n ="right"= "true"page ="#reas on CodesMai ntainActio n.scrollerPage"reRender ="sc1"/></ td &
19、gt;<td x h:outputText value ="page:" /></ td ><td >< h:inputTextname ="scrollerPage"value = "#reas on CodesMai ntainActio n.scrollerPage"id ="sc1"size ="1" ></ h:inputText ></ td ><td ><a4j:commandButtonva
20、lue ="GO"reRender = "datascroller,output,sc1"/></ td ></ tr ></ table >此段为页面右下翻页部分如图:图中画圈部分为in puttext,输入页码进行跳转。按钮不需要绑定方法,只需要重新渲染相关部分就可以。绑定后台的变量scrollerPage 的get/set方法需要进行修改。public In teger getScrollerPage() if ( null = scrollerPage ) scrollerPage= 1; else if
21、 ( scrollerPage .equals(O) scrollerPage= 1;return scrollerPage ;列表每页20行,解决输入负数,和超过最大页码时,显示的值问题。public void setScrollerPage(I nteger scrollerPage) In teger maxPage;/20+1;/20;if (totalCount %20 !=0) maxPage =totalCo untelse maxPage =totalCo untif (scrollerPage > maxPage)this . scrollerPage = maxPag
22、e; else if (scrollerPage<=0)this . scrollerPage =1; else this . scrollerPage = scrollerPage;四、错误信息1)实体类直接添加验证和错误信息:NotNullLength (max = 2, min = 2, message = nu mber!")Pattern (regex ="0-9+",message = "it must be a nu mber!"Colum n(n ame ="REASON_CODE")private S
23、tri ngreas on Code ;message是现实在页面上的错误信息。2)公共错误信息的添加于现实:页面:<ui:defi nen amemessages"><rich:messages id ="globalMessage""it must be a 2-digit)globalO nly="true" />Action类里相关方法:FacesC on text.getCurre ntl nsta neeFacesMessage( "Add successfully!"().addMessage();nullnew3)模板模板变量验证的错误信息(通过action往前台传):FacesMessages.in sta nee().addToC on trol(,"it has already existed!");reasonCode_Add为要传给的标签的id。页面代码:"reas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购集中谈判制度范本
- 采购预算审查制度
- 金蝶采购流程管理制度
- 钢结构厂采购管理制度
- 2025年前台沟通技巧测试
- 基于CMOS工艺的高线性射频接收机前端芯片设计
- 第19章 二次根式(单元基础卷)(原卷版)-人教版(2024)八下
- 销售代表的工作总结(集锦15篇)
- 食堂厨师年度工作总结
- 酒店的前台工作总结(15篇)
- 国家临床重点专科心血管内科等13个专科评分标准(试行)
- 虚拟电厂柔性控制系统设计说明书
- 汽轮机组试车方案
- PCI围术期强化他汀治疗的获益和机制课件
- JJG 539-2016数字指示秤
- GB/T 33365-2016钢筋混凝土用钢筋焊接网试验方法
- 辽宁盘锦浩业化工“1.15”泄漏爆炸着火事故警示教育
- GB/T 14536.6-2008家用和类似用途电自动控制器燃烧器电自动控制系统的特殊要求
- GB/T 1408.3-2016绝缘材料电气强度试验方法第3部分:1.2/50μs冲击试验补充要求
- 《乡风文明建设》(王博文)
- 《安娜·卡列尼娜》-课件-
评论
0/150
提交评论