PPR
概念:PPR是页面上指定的一部分,和页面其他部分不同的是PPR region 是在用户执行了一个相应的action事件后对该部分进行一个动态的刷新,当PPR被激活,UIX发出一个包含有要刷新部分的请求。服务器只对这些重新显示给用户的部分进行刷新,最重要的一点是,PPR不需要你写任何的javaScript代码来完成动态的刷新。
为什么要建立PPR
为了在刷新页面的时候为了减少页面的刷新时页面的抖动次数。
思路:
通过页面上的item的firePartialAction时间来修改PVO中某个逻辑属性的值,从而改变绑定在该PVO上的该属性的某个Item的rendered属性值。
建立PPR的步骤有那些:
1 为poplist建立bc4j包
2 建立PVO,目的是用来为动态改变的item的rendered属性值提供中间变量;
3 设置要发生动态改变的组件item的rendered属性值和PVO中的某一属性进行关联;
4 然后设置引起页面发生局部刷新的item的属性;
5 在CO中扑捉到该事件的触发
6 在AM实现对PVO的属性值的更改
图示:
下面通过实例来进一步详细上面的每一个步骤
1 建立bc4j包oracle.apps.ak.pprtest.poplist.server(假设AM所在的包名为:oracle.apps.ak.pprtest.server);
2 在该包上通过VO向导建立pprtestPVO,直接跳转到Attribute这一步,点击NEW,新建属性,Name:itemrendered 、Type:boolean;
3 将该PVO引入到AM下面;
4 在页面上添加一个MessageCheckbox组件、一个messageTextInput组件。
5 设置MessageCheckbox组件的ActionType属性为:firePartialAction,Event属性为:HidenTextinput,submit属性为:true、disable server side validation 属性为:true、disable client sidevalidation属性为:true;
6 设置messageTextInput的rerdered属性为${OA. pprtestPVO1. itemrendered }
7 在该页面所在CO中的ProcessFormRequest()方法中加入下面的代码
else if (“HidenTextinput “.equals(pageContext.getParameter(OAWebBeanConstants.EVENT_PARAM)))
{
// The Position poplist PPR change event has fired.
if(pageContext.getParameter(“MessageCheckbox”)!=null)
{
am.invokeMethod(“handlePositionChangeEvent”);
}
}
8 在AM中添加下面的方法: handlePositionChangeEvent{
OAViewObject pVO = (OAViewObject)findViewObject(“pprtestPVO1″);
OARow poRow = (OARow)pVO.getCurrentRow();
poRow.setAttribute(“itemrendered “,Boolean.FALSE);
}
9 完成,测试页面!
这里说一下fireAction和firePartialAction两类事件之间的区别:
1 经过我个人的测试,发现两种方法最大的区别在于fireAction时间可以导致整个页面的一个刷新,而fireAction适合于触发一个局部刷新的请求。
fireAction事件封装了提交一个Form时所必须的一些信息,包括“事件名称”,“form的参数”以及所有和提交form时相关的验证信息。
2 上面的disable server side validation 和client server side validation 的属性用来设置在提交form时候是否对该form中所有的参数进行验证,比如时候有必输字段的值为空,数字字符类型是否匹配等等的验证,注意的地方是,这里的验证是针对整个form而言的,在设置局部刷新的时候,一般设置该两个属性的值为true。如果着两个属性设置为false的话,如果页面存在其他的必输字段,那么会在客户端报错,导致局部刷新的请求不能被正常提交。
分享到:
相关推荐
oracle存储过程实现发邮件,oracle存储过程实现发邮件,oracle存储过程实现发邮件
ORACLE存储过程实现添加、修改、删除、查询
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
本文讲述如何在Oracle通过任务和管道的应用,异步调用存储过程的方法。并且介绍了其基本原理和具体实现测试。
帮助解决Oracle中存储过程自动备份得脚本及添加任务计划过程得详细解说 帮助解决Oracle中存储过程自动备份得脚本及添加任务计划过程得详细解说
ORACLE的存储过程的异步调用 ORACLE的存储过程的异步调用 ORACLE的存储过程的异步调用
Oracle定时执行存储过程 Oracle定时执行存储过程
oracle 事务 回滚 存储过程 自用
java代码与oracle 函数包实现 jsp分页
java调用oracle存储过程实现增删改查
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
使用java实现oracle存储过程。 共有3个小例子。实现的功能 1、无返回值的存储过程 如 insert 2、有返回值的存储过程(非列表)select id from tab 3、返回列表 如:select * from tab 顺便鄙视下csdn,作为一个it...
oracle 存储过程实例 oracle存储过程实例
Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标
本文档详细介绍了如何在Oracle数据库中实现像C#等其它编程语言中Split函数来拆分字符的功能。例子简单易懂,并附有详细的实现过程。
Oracle存储过程和函数(最详细包含emp 表实例操作,边看边操作),目前最详细的存储过程文档,不好你举报我。含好多ORACLE SCOTT中emp表的实例。
很详细的介绍了Oracle存储过程中实现加密的方法,原理。
oracle定时器调用存储过程
oracle 批量插入存储过程,性能非常高!
oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel