问题描述:
在OAF页面中,table控件可以分页显示视图对象中的数据,默认情况下,每页显示10条数据。
假设有这样一个开发,查询页面用于查询用户需要的数据,而选择一条数据后就进入操作界面,用户可以执行一系列操作,还可以执行Commit和Rollback操作。当用户操作完成后,需要回到查询页面,那么查询页面必须保持用户查询之后的的状态,包括表格中的数据以及当前表格所处的页。
解决方法:
开发的时候,需要将用户输入的查询项保存到缓存中,如果查询页面和操作页面使用相同的Root AM,那么可以将用户输入的值保存到Transaction中,使用pageContext.putTransactionValue()/getOADBTrasaction().putValue()或pageContext.putTransactionTransientValue()/getOADBTrasaction().putTransientValue()方法。在初始化查询页面时,根据Transaction中的值,初始化视图对象查询。如果两个页面使用不同的Root AM,那么应该将用户输入的值保存到Sesison中,使用pageContext.putSessionValue()或pageContext.putTransientSessionValue()。
那么如何恢复用户之前访问的页呢?当视图对象执行查询时,Table默认显示视图对象的行集中第一个Range的数据,只有当用户单击分页链接后,OA Framework才会将下一个Range的数据提取到缓存中。视图对象提供了对行集Range的操作,通过以下两个方法:vo.getRangeStart()和vo.setRangeStart()。
vo.getRangeStart()获取当前Range中第一个行在整个行集中的index值,而vo.setRangeStart()通过设置Range的第一个行的index来指定当前的Range。
现在我们就可以很容易的实现保存用户访问页的功能了,当离开查询页时,将VO当前的RangeStart保存到Transaction或Session中,当用户返回查询页时,就可以在VO查询后,通过调用setRangeStart()方法,设置为之前保存的RangeStart。
补充:
API上对于putTransactionTransientValue(),putTransientValue()的解释如下:
putTransactionTransientValue()
Puts a transient value on the transaction. These values will be cleared when the root application module is released back to the application module pool.
Transient transaction values will persist only within the JVM. Transient values will not persist across JVMs nor beyond the servlet session scope. Transient transaction values will also be cleared when the root appliction module is recycled for use by another user thread.
putTransactionValue()
Puts a value on the transaction. These values will be cleared when the root ApplicationModule is released back to the application module pool.
由此可见,区别在于Transient这个关键字上,按照Java中对于Transient这个关键词的解释就是:
transient变量的值不会被写入到对象流中,由transient修饰的变量在序列化时不保存状态,也可以说不能被持久化,因为在对象传输的情况下,有些域是"瞬时的",也就是说只与当前进程环境相关,出了这个进程就没有意义了,这样的域是"本地化的",没有序列化的价值,标为瞬时态的.
分享到:
相关推荐
下面将详细介绍OAF中的关键知识点。 1. **OAF架构**: OAF基于Java和J2EE技术,其核心组件包括Model(模型)、View(视图)和Controller(控制器)。Model负责处理数据和业务逻辑,View负责展示用户界面,...
### OAF 中 VL 和 AdvancedTable 结合使用的详细解析 #### 一、背景介绍 在 Oracle Application Framework (OAF) 的开发环境中,为了提高开发效率和减少代码量,开发者经常需要利用框架内置的一些高级功能。其中,...
在Oracle E-Business Suite(EBS)中,个性化标准OAF页面是指基于Enterprise Object(EO)或SQL的版本,通过替换Value Object(VO)添加客户化属性来实现个性化的页面开发。下面是相关的知识点: 个性化EBS标准OAF...
本文档主要总结了在OAF项目开发过程中遇到的各种问题,包括功能问题、控件问题、交互问题等,并提供了一些实用的解决方案和示例代码。对于初学者来说,这是一份非常宝贵的参考资料。 #### 常见问题 - **功能问题**...
10. 实际操作:文档中的教程部分用具体的案例(如Hello, World、Search查询等)来说明OAF框架的各个组成部分如何在实际开发中运用。通过这些操作,可以加深对OAF框架的理解,并学会如何在实际项目中应用这些知识。 ...
3. **Page Flow**: 页面流程是OAF中的导航模型,它定义了用户在应用中如何从一个页面过渡到另一个页面,以及如何处理用户操作。 4. **Expression Language (EL)**: EL是OAF中的表达式语言,用于在UI组件和后台数据...
手册中详细介绍了如何在Windows和Linux环境下配置JDeveloper工具,这是开发OAF应用的主要IDE。具体步骤包括安装JDeveloper、配置Oracle JDK、设置Oracle数据库连接等。这些步骤确保了开发者能够顺利地进行后续的应用...
Oracle Application Framework (OAF) 是Oracle E-Business Suite (EBS) 中的一个核心组件,用于构建和定制企业级用户界面。OAF 提供了一个灵活且强大的框架,允许开发者创建与EBS集成的自定义应用程序,提供更丰富的...
Oracle Application Framework (OAF) 是Oracle E-Business Suite (EBS) 中的一个核心组件,用于构建用户界面和提供个性化功能。这份"oaf培训资料"显然是一份详细的教学材料,旨在帮助学习者掌握OAF的基本概念、架构...
标题 "OAF Table 滚动条" 涉及的是Oracle Application Framework (OAF) 中的一个特定功能,即在OAF表格组件中如何处理滚动条的问题。Oracle Application Framework是Oracle公司提供的一种企业级开发框架,用于构建...
标题中的“毕业设计中英文翻译 oaf”指出这是一个与毕业设计相关的项目,主要涉及的是OAF(Oracle Application Framework)的标准翻译。OAF是Oracle公司提供的一种企业级应用开发框架,它允许开发者构建基于Oracle E...
- **职责分配**:在OAF中,通过为用户分配特定职责来控制其访问权限。 - **JDeveloper配置**:包括如何配置JDeveloper来支持OAF开发。 - **测试验证**:确保开发环境正常工作的测试步骤。 #### 详细说明 ##### 一...
- **OAF 对象概念**:在 OAF 中,对象是用来表示应用程序中各种实体的一种方式,如实体对象、关联对象、视图对象等。 - **OAF 对象命名规则**:为了保持代码的一致性和易于理解,OAF 推荐遵循一定的命名约定,例如...
OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程OAF教程
在Oracle Application Framework (OAF) 开发中,CO、VO、AM 和 EO 是四个关键的组件,它们构成了这个企业级应用框架的核心。以下是对这些概念的详细解释以及它们在实际开发中的常见用法: 1. **CO(Controller)**...