OAF—状态管理2

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 23:55 点击:

页面上下文
每次接收到一个页面的请求,OAF都建立一个OAPageContext存储信息,直到新的页面完成(特别的,OAPageBean建立OAPageContext,它主要是在页面后台起做作)
请求和页面边界
一个WEB应用的工作单元是一对请求/响应,浏览器发送请求,servlet处理这个请求并返回一个响应,响应的传送意味着一个请求的结束,或者是一个请求的完成与新的请求之前的分界。
同样,当OAPageBean完成页面的处理,这也是当前页面与新页面之间的分界。
所以,一个用户从页面X跳转到页面A,又跳转到页面B,这时我们有两个请求边界:X和A之间,A和B之间。也有两个页面边界:X和A,A和B。
 
有些情况下,请求和页面的边界不相同,考虑以下情况:
用户从X到A
在A的时候,在响应决定显示哪个页面之前,用户选择了A的控件,所以,浏览器发送了一个请求到A,当A处理结束,就达了第一个页的边界。
在页面A的代码中,开发者估算用户选择了哪个控件发送JSP FORWARD到页面B,因为我们不想重新显示A,所以不用反回HTTP响应,OAF开始处理页面B(包括建立一个新的OAPageContext),一旦B处理完成,就到达了第二个页面边界。
因为页面B必须显示给用户,故一个HTTP响应发送到浏览器,就到了请求的边界。
 
基于以下的原因,明白这一点是很重要的
l         请求参数存在于请求的生命周期中,它可以跨越多个页面的边界。这对于那些认为一个请求和一个页面相同的开发者来说有点奇怪,在JSP FORWARD后也不用说明请求参数还存在。如以下示例:
1.         用户选择了页面X中的连接,转到页面A,页面A的URL包括参数foo=bar
2.         页面A发送一个到页面B的JSP FORWARD,现在即使我们是在一个新的页面中,请求中仍然包括foo=bar
3.         如果你不想在jsp forward后还包括参数,你必须显式的覆盖它(注意你不能从请求中删除参数),如当你调用OAPageContext的setForward方法时你可以重置参数,foo=X
提示:将不需要的参数设为一个新值更可取,不要简单地将它设为“”。
l         因为在页面上下文与请之前没有一对一的关系,对于从OAPageContext中访问请求参数,有人会感到疑惑。只要记得每个页面是一个明确的实体,从它的“显示点”OAPageContext表示了一个请求。
l         当你进入上图的细节时,你会看到页面与请求的边界是明确的有不同含义的钝化事件点。
请求
尽管是生命周期很短,每个HTTP请求还是建立一个对象。这个对象包括以下应用状态:
所有的URL参数,不管是POST还是GET。
如果是POST请求,包括FORM中的数据。
如果是POST请求,web bean和事件名称会关联到用户选择的控件(如用户选择了一个GO按钮,请求会包括以这个按钮命名的web bean,所以你可以知道它被按下了并以此做出响应)。
为了访问请求值,使用OAPageContext的getParameter*()方法。
使用隐藏域
一个隐藏域是开发者在FORM中读取或写入数据工具,它不能被用户访问。如同用户看到的FORM域一样,隐藏域也在提交时被加到了请求中。
你可以通过在Jdeveoper中选择item style的formValue建立一个隐藏域。在运行时,它以oracle.apps.fnd.framework.webui.beans.form.OAFormValueBean来初始化。
在JSP FORWARD和重定向时指定值
当你显式的使用OAPageContext setForward*()或者OAPageContext.sendRedirct()方法转到一个新的页面时,你可以设定请求参数。
例如:假定有一个页面包括一个提交按钮,当用户点击时,我们想使用JSP FORWARD转到B页面。页面A需要一传递一个mode值给页面B(可以由不同的方式来访问),所以它知道如何做。
1、  用户点击提交按钮。
2、  在页面A的控制器中处理这个按钮,在processFormRequest方法中调用OAPageContext.setForwardURL()。做为一个方法调用,设定参数queryMode=automatic。
3、  在页面B的控制器中,在processRequest方法中检查参数queryMode值,调用getParameter(“queryMode”)。
4、  页面B控制器于是响应queryMode参数值为automatic,查询数据来显示页面。
调用OAPageContext.putParameter()指定值
OAPageContext包括putParameter()方法,在页面处理过程中,你可以用来传递值到web bean结构中,或者使用jsp forward从一个页面传到下一个页面。如:一个顶层的region可能放置一个值到缓存中,它的子region可以引用。
提示:这个和JAVA SERVLET 2.1的HttpServletRequest.setAttibute()方法很相似,可以认为它们做用

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Table函数使用简介
    • Oracle数据库Constraint约束的常用操作及异常处理
    • Bulk Collect性能分析(zz)
    • export/import的使用
    • OCP043第十五讲 Database Security
    • ORACLE10gr2数据导入MySQL方案
    • oracle 让sys用户可以使用isqlplus
    • 在oracle数据库下使用iSQL*Plus DBA访问数据库
    • Oracle行列转换小结
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1