EBS OAF 开发中的OAMessageRadioGroup控件

(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)

简单介绍

RadioGroup控件在OAF12.2.4及之前的开发文档中没有想关介绍,也没有不论什么演示样例程序中有相关应用。在网上有介绍说,它是和radiobutton一块使用,其ID作为RadioButton的group name使用,而且有相关样例。可是这是错误的,本文就是用来介绍RadioGroup控件,并有对应的代码演示样例。

RadioGroup控件并不能和RaidioButton控件一块使用,它也和RadioButton控件关系不大,由于你使用它的时候,根本不须要手工加入不论什么RadioButton控件。它实际是和MessageChoice(Poplist)非常像,或者说全然和MessageChoice功能一样,都是值对形式,仅仅是显示形式不一样, MessageChoice显示为下拉菜单,而RadioGroup就显示为一组RadioButton。

MessageChoice会为其对应的VO中的每条记录在下拉列表生成一条记录;而RaidoGroup会为VO中的没条记录生成一个Radiobutton.

演示样例介绍

实现后的页面例如以下,假设选择了Quick Mode,以下利用PPR事件来先Quick Mode相关的区域(Region);假设选择了Standard Mode,以下利用PPR事件来显示Standard Mode相关的区域。

其页面声明式定义例如以下图,包括一个RadioGroup控件极其以下依据其值要显示的两个区域。

演示样例实现步骤

1.      就像上面说的,由于RadioGroup和MessageChoice(Poplist)非常像,所以我们也须要为这个控件建立一个对应的VO,这里的VO是RadioGroupVO,这非常easy,仅仅是从表AK_SEARCH_MODE中查询出要使用的值对而已。

这里表是我自己建立的,假设要用的话,建议使用EBS lookup,这样能够完美解决多语言问题等,我使用的脚本例如以下:

CREATETABLE AK_SEARCH_MODE

(search_modeVARCHAR2(20)   NOT NULL,

mode_valueVARCHAR2(20));

INSERTINTO AK_SEARCH_MODE VALUES ('Quick Mode', 'QUICK');

INSERT INTO AK_SEARCH_MODE VALUES ('Standard Mode','STANDARD');

2.      建立好VO,我们须要建立AM。这里能够把上面的VO加到AM中,也能够不加,这和poplist一样,依据须要,由于poplist和radiogroup都能够直接使用VO的长名称(包括路径),也能够使用VO的演示样例名。

3.      建立页面结构,就像上面看到的一样,这里为RadioGroup控件设置例如以下,事实上全然和MessageChoice(poplist)全然一样。

4.      由于我们要触发PPR事件,所以,这里也使用了PVO,当中加了两列分别用于控制当选择不同的mode时显示不同的区域。

5.      由于加入了PVO,所以我们须要在请求页面的时候,要初始化PVO,须要对这个页面加入CO,并在AM和VO里加入以下的代码。

AM代码:

public void initPVOAndRadioGroupVO()

  {

    OAViewObjectImpl pvo = getRadioGroupPVO1();

    if(pvo!=null &&pvo.getFetchedRowCount()==0)

    {

      pvo.setMaxFetchSize(0);

      pvo.executeQuery();

      Row pvoRow = pvo.createRow();

     pvoRow.setAttribute("RenderQuickRN", Boolean.TRUE);

     pvoRow.setAttribute("RenderStdRN", Boolean.FALSE);

     pvoRow.setNewRowState(Row.STATUS_INITIALIZED);

      pvo.insertRow(pvoRow);

      RadioGroupVOImpl mainVo =this.getRadioGroupVO1();

      mainVo.executeQuery();

    }

  }

CO代码:

 public void processRequest(OAPageContextpageContext, OAWebBean webBean)

  {

    super.processRequest(pageContext, webBean);

    OAApplicationModule am = pageContext.getApplicationModule(webBean);

   am.invokeMethod("initPVOAndRadioGroupVO");

  }

6.      设置页面中不同mode对应区域的render属性利用EL来绑定到PVO上建立的两个属性来实现PPR。

7.      在第三步为RadioGroup加入了PPR事件,所以须要在AM和CO做对应的处理,代码例如以下,这里我们依据RadioGroup控件的值通过AM来设置PVO的值,然后依据PVO来动态显示不同的区域。

AM中的代码:

 public void handleRadioBtnChanged(Stringmode)

  {

    Row pvoRow = getRadioGroupPVO1().first();

    if("QUICK".equals(mode))

    {

     pvoRow.setAttribute("RenderQuickRN", Boolean.TRUE);

     pvoRow.setAttribute("RenderStdRN", Boolean.FALSE);

    }

    else

    {

     pvoRow.setAttribute("RenderQuickRN", Boolean.FALSE);

     pvoRow.setAttribute("RenderStdRN", Boolean.TRUE);

    }

  }

CO中的代码:

public void processFormRequest(OAPageContextpageContext, OAWebBean webBean)

  {

    super.processFormRequest(pageContext,webBean);

    OAApplicationModule am =pageContext.getApplicationModule(webBean);   

    String event = pageContext.getParameter(OAWebBeanConstants.EVENT_PARAM);

    String source =pageContext.getParameter(SOURCE_PARAM);

   if(event.equals("handleModeChange"))

    {

      OAMessageRadioGroupBean radioGroupBean =(OAMessageRadioGroupBean)webBean.findChildRecursive("ModeRadioGroup");

      String mode =(String)radioGroupBean.getValue(pageContext);

      Serializable[]  paras = { mode };

     am.invokeMethod("handleRadioBtnChanged", paras);

    }

  }

这样一个简单的RadioGroup控件演示样例就完毕。

EBS OAF 开发中的OAMessageRadioGroup控件的更多相关文章

  1. EBS OAF开发中实现參数式弹出窗体

    EBS OAF开发中实现參数式弹出窗体 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 概览 參数式弹出窗体和嵌入式弹出窗体不一样,它拥有独立 ...

  2. EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充

    EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) EO理论上 ...

  3. Android开发中目前流行控件和知识点总结

    Android开发中目前流行控件和知识点总结   1.SlidingMenu 滑动菜单 应用案例:Facebook . Path 2.0 .人人.网易新闻 下载地址: https://github.c ...

  4. EBS OAF开发中的错误/异常处理(ErrorHandling) (转)

    原文地址 EBS OAF开发中的错误/异常处理(ErrorHandling) EBS OAF开发中的错误/异常处理(ErrorHandling) (版权声明,本人原创或者翻译的文章如需转载,如转载用于 ...

  5. ios开发中关闭textview控件的虚拟键盘

    在ios开发中,textfield控件在点击的时候出现虚拟键盘,关掉虚拟键盘可以通过虚拟键盘中的done button和点击view中的任意地方来关闭虚拟键盘. 1.第一种方法是textfield控件 ...

  6. EBS OAF开发中怎样实现功能页签(Global Tab)

    EBS OAF开发中怎样实现功能页签(Global Tab) (版权声明.本人原创或者翻译的文章如需转载.如转载用于个人学习,请注明出处.否则请与本人联系,违者必究) 功能页签的实现不须要不论什么编码 ...

  7. EBS OAF开发中怎样通过ReferenceAO进行验证

    EBS OAF开发中怎样通过ReferenceAO进行验证 (版权声明.本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) Reference AO 除了用于 ...

  8. EBS OAF开发中实体对象和视图对象的属性设置器

    EBS OAF开发中实体对象和视图对象的属性设置器 (版权声明.本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 源文: Home > Oracle ...

  9. WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色

    本文转载:http://www.cnblogs.com/umplatform/archive/2012/08/29/2660240.html 在B/S开发中,对TreeView控件要改变当前选中节点的 ...

随机推荐

  1. VPN服务器搭建好以后的安全防护

    之前讲过VPN的搭建过程,那么搭建完毕后,需要做哪些防护呢? 这里只说一下禁止VPN账户登录到服务器的设置,直接上图 找到权限分配后把VPN账号添加到拒绝本地登录的策略中,这样保障了VPN账户不能通过 ...

  2. web中webAppRootKey作用

    <context-param> <param-name>webAppRootKey</param-name> <param-value>bgn.root ...

  3. jni note

    2016-1-15 javah 使用javah可以自动从java文件生成jni头文件, 用法:javah [选项] <类> 其中 [选项] 包括:         -help        ...

  4. 3D项目处理点选操作步骤

     1.用notepad++模型的obj格式文件,查找到模型各个部分的名称,命名规则:g mesh......,把名字改为规则命名.  2.选择处理 #ifdef _DEBUG #pragma comm ...

  5. Sql优化(三) 关于oracle的并发

    Oracle的并发技术可以将一个大任务分解为多个小任务由多个进程共同完成.合理地使用并发可以充分利用系统资源,提高效率.一. 并发的种类Parallel queryParallel DML(PDML) ...

  6. ArcEngine做栅格数据拉伸

    //获得已打开的栅格数据 IRasterLayer rasterLayer = new RasterLayerClass(); rasterLayer = (IRasterLayer)axMapCon ...

  7. sim卡中电话本(ADN)的简要格式

    ADN的格式 ADN存放于sim卡下面3f00/7f10/6f3a,记录文件格式,其最小记录格式为14,最长为255(?),记录个数最大为255(?) 其后数14个字节是必有的,其前12个字节是电话号 ...

  8. NOI2011 Day1

    NOI2011 Day1 兔农 题目描述:\(fib[1]=fib[2]=1, fib[i]=fib[i-2]+fib[i-1] (i\geq 3)\),若\(fib[i] \equiv 1(mod ...

  9. ubuntu下编译内核驱动。

    目的: 1. 驱动热身.网上有很多类似的文章可供参考. 2. 在操作系统中, 编写这个设备的驱动. 3. 为写qemu的watchdog驱动练手. 有朋友问make的 watchdog驱动 需要什么准 ...

  10. 对应第一篇文章api的编写

    router.get('/api/tags/search/:list/:key/:page', function(req, res) { if(_.isEmpty(req.params.key)) { ...