壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2904|回复: 2

[OAF] OracleOAF开发指南第二章翻译(中文)-(4)

  [复制链接]
发表于 2008/4/7 13:26:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
1.1.1.      The Controller

控制器响应用户的动作,控制应用进程的流转。
在“OAF开发课程第三章”中将会详细讨论控制器的实现细节。
控制器与视的region级发生关联(通常的解释是,任何OAFweb bean,只要实现了oracle.apps.fnd.framework.webui.beans.OAWebBeanContainer接口就可以与控制器建立关联)。
所有的控制器都继承自oracle.apps.fnd.framework.webui.OAControllerImpl类。
控制器类定义了web beans的行为。很明显,你可以编写控制器代码来实现:
ü         运行时操纵或初始化UI(包括无法在IDE静态生成的而需要编程实现的布局)
ü         捕获或者处理用户事件,比如点击按钮的动作。
请求处理

当浏览器发送一个对OA.jsp的请求:
1、             OAF页面处理类(oracle.apps.fnd.framework.webui.OAPageBean)依据页面名称来决定需要调用哪个rootAM,并且将这个AMAM池中取出。这个AM也可以从JDBC连接池中获取一个数据库连接,然后建立对上下文页面的处理。
2、             用户会话被验证;如果有效,将显示一个登录页面(细节后面详述)。
3、             假设用户是合法的,则OAPageBean将获取请求参数来处理POST请求或GET请求。
Handling a GET Request

当浏览器发出一个GET请求时,OA Framework使用即定的UI定义来建立web bean层次:
1           OAPageBean调用页面顶级pageLayout beanprocessRequest()方法,并且整个web bean的层次与初始化web bean时一样将被递归处理(包括所有关联的模型组件)。
1)、每个web bean将会实例化其所关联的控制器,并调用控制器CO中的processRequestOAPageContext pageContext,OAWebBean webBean)方法。可以通过这个方法来构建、修改页面布局,设置web bean的属性以及任何的手工数据初始化(如切换到某个页面时执行自动的数据库查询)。
2)、一些复杂的web bean(比如oracle.apps.fnd.framework.webui.beans.table.OATableBeanoracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean)通过调用prepareForRendering()方法来执行“控制器后”(POST-CONTROLLER)处理。该方法的描述请参考相应的bean Javadoc

3)、每个web bean都将调用其子成员的processRequest()。

2           oracle.apps.fnd.framework.webui.OAPageBean生成UIX展现所需要的web bean的层次,并传送到浏览器端。
Handling a POST Request

当浏览器发出一个POST请求到服务器时:
1.           OAPageBean将会检测web bean层次是否在内存中。如果没有,它将依照上面处理GET请求的方式来进行处理。
2.           OAPageBean调用层次中的所有beanprocessFormDataOAPageContext pageContext,OAWebBean webBean)方法来将表单中的数据提交到模型中去(通常是调用pageLayout类型的regionprocessFormData(),并对其的子成员的processFormData进行递归调用)。将表单数据自动提交到对应的模型中调用属性和实体级的验证,并且如果抛出任何验证异常的话,处理过程将停止并且错误信息将会返回给用户。

3.           如果在执行processFormData()过程中没有抛出异常,OAPageBean将调用层次bean中所有层次上的processFormRequestOAPageContext pageContext,OAWebBean webBean)。该过程中可以通过增加控制器代码来实现对用户事件的响应。

4.           如果没有JSP页面被服务器端重置(forward)或客户端重定向(redirect),抑或在执行processFormRequest()过程中有异常被抛出,则页面将被刷新。

OAPageContext

OA Framework接收到一个OA.jsp请求时,OAPageBean将生成OAPageContextoracle.apps.fnd.framework.webui.OAPageContext)。这个类只能存货在页面处理过程中。processRequest()、processFormData()、processFormRequest()三个方法俊将OAPageContext做为参数,并且任何你编写的控制器代码均可以利用这个重要的类。


上面的图示说明,OAPageContext对请求和rootAM均有引用关联。通过这些已有的关联,OAPageContext在每个你的控制器的响应-请求方法中传递。以下几个通常的工作就是如何利用OAPageContext的实例:
访问请求参数
OAPageContext可以通过调用getParameterString name)来读取请求的参数值。在GET方式下,参数来自于URL地址串中的参数,而在POST方式下,参数名称来自于FORM中的域名,参数值来自于域值。
提示:在你页面上定义过的独立web bean(如buttonfields等),通过getParameterString name)返回响应的唯一ID值。比如你可以通过以下的控制器代码来捕获按钮的点击:
processFormRequest(OAPageContext pageContext,OAWebBean webBean)
{
   If(pageContext.getParameter(“Go”) != null)
   {
     //The user pressed the “Go” button,do something...
   }
}
访问 Root AM
OAPageContext保持了对rootAM(该AM提供对VO和事务的访问)的引用。如果需要访问AM的时候,来找OAPageContext J
processFormRequest(OAPageContext pageContext,OAWebBean webBean)
{
OAApplicationModule am = (OAApplicationModule)pageContext.getRootApplicationModule();

}
发出导航指令
使用该类上的方法来指示OA Framework执行一个JSP的服务器端重置(forward)或者客户端重定向(redirect)操作。示例代码如下(细节部分见后):
processFormRequest(OAPageContext pageContext,OAWebBean webBean)
{
  if(pageContext.getParameter(“CreateButton”)!=null)
  {
    //用户点击“新建供应商”按钮,执行一个JSP forward 到“新建供应商”页面
    pageContext.setForwardURL(“OA.jsp?page=/oracle/apps/dem/employee/webui/EmpDetailsPG”,
null,
OAWebBeanConstants.KEEP_MENU_CONTEXT,
null,
null,
true,//Retain AM
OAWebBeanConstants.ADD_BREAD_CRUMB_YES,
//Show breadcrumbs
OAWebBeanConstants.IGNORE_MESSAGES);
}
}
访问应用上下文
类似模型(model)代码中的OADBTransactionOAPageContext提供了对servlet会话级的Oracle应用的上下文信息,比如用户名、ID、当前职责等等。以下代码片断就是取用户名的例子:
processRequest(OAPageContext pageContext,OAWebBean webBean)
{
   String userName = pageContext.getUserName();
}

附件:
发表于 2012/2/8 15:34:22 | 显示全部楼层
顶顶顶顶,什么时候出第三章啊
发表于 2013/7/26 15:04:13 | 显示全部楼层
希望把所有的都翻译过来!给我们这些E文不好的找条活路!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 02:14 , Processed in 0.016239 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表