案例:通过Lov选择组织,然后自动筛选职位的记录,职位用Choice控制选择。而且还要实现回填(当修改记录时)
基本原理:当Lov回填事件触发时(isLovEvent=true),读取Lov的返回值列表,找出关联两个VO的键值,作为Choice对应的VO的查询条件,构建动态SQL,刷新VO
基本步骤:
1 为组织和职位创建VO,两个VO需要有一个外键关联,比如OrganizationId
2 为组织建立Lov(Lov region,本页上的MessageLovInput),LovMap是组织名称,和组织ID,注意组织ID(OrganizationId)的Return值选择一个控件,比如OrgId(我使用一个FormValue)
3 为职位建立Choice,注意:Instance必须要写,否则筛选不成功,该Instance就是注入到本页AM中的VO实例的名称。Definition,Display和Value都正常填写即可。
4 在本页的AM中添加组织和职位的VO,在本页的Controller中的processFormRequest中写下如下代码:
if (pageContext.isLovEvent())
{
String lovInputSourceId = pageContext.getLovInputSourceId();
if("OrganizationLovInput".equalsIgnoreCase(lovInputSourceId))
{
Hashtable lovResults =pageContext.getLovResultsFromSession(lovInputSourceId);
if (lovResults != null)
{
Set entrySet=lovResults.entrySet();
Iterator iteResult=entrySet.iterator();
while(iteResult.hasNext())
{
Map.Entry me=(Map.Entry)iteResult.next();
String key=(String)me.getKey();
String value=(String)me.getValue();
if("OrgId".equalsIgnoreCase(key))
{
Serializable[] params = { value };
am.invokeMethod("changePositionChoiceOption",params);
}
}
}
}
}
由于项目中多处使用这堆代码,就写了个POJO:
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.OAApplicationModule;
import java.util.Hashtable;
import java.util.Set;
import java.util.Iterator;
import java.util.Map;
import java.io.Serializable;
public class ChoiceOptionSelectorCommand
{
private OAPageContext pageContext;
private OAApplicationModule am;
public ChoiceOptionSelectorCommand()
{
}
public ChoiceOptionSelectorCommand(OAPageContext pageContext,OAApplicationModule am)
{
this.pageContext=pageContext;
this.am=am;
}
public void execute(String msgChoice,String criteria,String method)
{
System.out.println("execute");
if (pageContext.isLovEvent())
{
String lovInputSourceId = pageContext.getLovInputSourceId();
if(msgChoice.equalsIgnoreCase(lovInputSourceId))
{
Hashtable lovResults =pageContext.getLovResultsFromSession(lovInputSourceId);
if (lovResults != null)
{
Set entrySet=lovResults.entrySet();
Iterator iteResult=entrySet.iterator();
while(iteResult.hasNext())
{
Map.Entry me=(Map.Entry)iteResult.next();
String key=(String)me.getKey();
String value=(String)me.getValue();
if(criteria.equalsIgnoreCase(key))
{
Serializable[] params = { value };
am.invokeMethod(method,params);
}
}
}
}
}
}
}
可以在Controller里这样调用:
ChoiceOptionSelectorCommand choiceSelector=new ChoiceOptionSelectorCommand(pageContext,am);
choiceSelector.execute("Organization","OrgId","changePositionChoiceOption");
Organization是MessageLovInput的名字,OrgId是Lov中LovMap里的Return对应的Item的名字, changePositionChoiceOption是AM中改变Choice选项列表的方法。
5 在Am中添加changePositionChoiceOption方法,以OrgId作为参数,实际上是调用PositionVO的查询方法,完成数据填充。
分享到:
相关推荐
在IT领域,级联失效(Cascading Failure)是一种复杂的现象,特别是在网络系统中,如电力网格、互联网或通信网络。当一个组件故障时,它可能导致其他相关组件相继失效,从而引发大规模的系统崩溃。MATLAB作为一种...
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单...
级联菜单 动态级联菜单 级联菜单是一种常见的Web应用程序用户界面元素,它允许用户从多个选项中选择一个或多个项目。动态级联菜单是指可以根据实际情况动态生成选项的级联菜单。下面将对该技术进行详细的解释。 ...
级联字典是一种在计算机科学和信号处理领域中常见的数据结构,特别是在图像处理、压缩编码和机器学习等应用中。这种字典构造方法是通过组合多个基础字典,以达到更丰富的表示能力和更高的编码效率。在本文中,我们将...
STM32定时器级联是STM32微控制器中一种高效利用硬件资源、扩展定时功能的方法。在STM32系列芯片中,定时器可以被配置为级联模式,以实现更复杂的定时或计数任务,比如产生精确的PWM输出、高分辨率的计数等。下面我们...
虚级联和连续级联是SDH(同步数字体系)网络中用于传输和复用数据的重要技术,这两种方法主要用于在SDH系统中有效地利用传输资源,实现带宽的灵活管理和扩展。在这里,我们将深入探讨这两种级联方式以及它们在SDH...
级联菜单是一种常见的用户界面元素,它在网页设计和软件开发中被广泛使用,尤其在导航和选项选择中。级联菜单通常表现为一个主菜单项下拉显示一系列相关的子菜单,子菜单还可以继续展开显示更深层次的选项。这种设计...
在这个压缩包中,包含了多种级联分类器,这些分类器是用XML文件格式存储的,专门用于不同类型的对象检测,如眼睛、人脸、全身以及半身检测。 级联分类器是一种基于Adaboost算法的机器学习模型,特别适合于实时的...
在layui中,级联选择器是一种常用于数据层级关系展示和选择的组件,尤其适用于地区选择、部门结构等场景。本篇文章将深入探讨layui的多选级联选择器及其无限级联功能。 首先,我们要理解什么是级联选择器。级联选择...
### Cisco MDS 9000 系列级联配置详解 #### 一、概述 Cisco MDS 9000 系列是专为数据中心设计的高性能光纤通道(Fiber Channel, FC)交换机,支持高密度端口连接与灵活的拓扑结构。级联配置是指将多台交换机通过...
SDH 相邻级联与虚级联技术 SDH 相邻级联与虚级联技术是 SDH 传输网中的两种级联技术,用于解决大颗粒业务的传输问题。相邻级联技术是将同一 STM-N 数据帧中相邻的虚容器级联成 C-4/3/12-Xc 格式,作为一个整体结构...
74HC595 级联-时钟偏移问题 在数字电路设计中,_SN74HC595 是一种常见的 3 态输出 8 位移位锁存寄存器,广泛应用于需要串并转换的场景中。但是在实际应用中,级联中的后级 SN74HC595 时常出现偶然或概率性出错的...
在微信小程序开发中,城市级联(Cascading City Selection)是一种常见的用户界面功能,用于帮助用户逐级选择他们的所在城市或目标城市。这个功能在许多应用中都很实用,例如在线购物、餐饮外卖、旅行预订等,因为它...
### JSP实现级联菜单详解 #### 一、概述 级联菜单是Web应用程序中常见的一种交互设计方式,尤其在需要展示多层级数据结构时,如省份-城市选择器等场景下非常实用。通过级联菜单,用户可以方便地根据上一级的选择来...
在React.js开发中,"react级联选择器/支持多选/单选"是一个常见的组件需求,用于构建具有层级关系的数据选择功能。这种组件通常被用在如地区选择、组织结构选择等场景,用户可以逐级展开选项,进行单选或多选操作。...
除了上述常见的级联类型,Hibernate还提供了其他的级联选项,如`CascadeType.REFRESH`用于刷新关联对象的状态,`CascadeType.DETACH`用于断开与Session的关联,以及`CascadeType.HALF`等更复杂的级联行为。...
### MySQL级联更新与级联删除详解 在数据库设计中,外键约束是维护数据完整性和一致性的重要手段之一。MySQL的InnoDB存储引擎支持多种不同的处理外键的方式,包括级联更新(Cascade Update)和级联删除(Cascade ...
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单
本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、级联更新和级联删除。 一、Many-to-Many关系基础 在数据库设计中,Many-to-Many关系意味着两个实体之间存在多对多的关系。例如,学生可以选修多门...
**级联选择器(Cascader)在JavaScript中的应用** 级联选择器,通常被称为级联下拉框或树形下拉菜单,是一种常见的用户界面元素,尤其在数据层次结构复杂的情况下,它允许用户逐级浏览和选择数据。在JavaScript开发...