马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622 。
您需要 登录 才可以下载或查看,没有帐号?注册
x
案例:通过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中写下如下代码: 1.
if (pageContext.isLovEvent()) 4.
String lovInputSourceId = pageContext.getLovInputSourceId(); 6.
if("OrganizationLovInput".equalsIgnoreCase(lovInputSourceId)) 8.
Hashtable lovResults =pageContext.getLovResultsFromSession(lovInputSourceId); 9.
if (lovResults != null) 11.
Set entrySet=lovResults.entrySet(); 12.
Iterator iteResult=entrySet.iterator(); 13.
while(iteResult.hasNext()) 15.
Map.Entry me=(Map.Entry)iteResult.next(); 16.
String key=(String)me.getKey(); 17.
String value=(String)me.getValue(); 20.
if("OrgId".equalsIgnoreCase(key)) 22.
Serializable[] params = { value }; 24.
<span style="background-color: #ffff00;"> am.invokeMethod("changePositionChoiceOption",params);</span>
1.
import oracle.apps.fnd.framework.webui.OAPageContext; 2.
import oracle.apps.fnd.framework.OAApplicationModule; 3.
import java.util.Hashtable; 5.
import java.util.Iterator; 7.
import java.io.Serializable; 9.
public
class ChoiceOptionSelectorCommand 11.
private OAPageContext pageContext; 12.
private OAApplicationModule am; 13.
public ChoiceOptionSelectorCommand() 17.
public ChoiceOptionSelectorCommand(OAPageContext pageContext,OAApplicationModule am) 19.
this.pageContext=pageContext; 23.
public
void execute(String msgChoice,String criteria,String method) 25.
System.out.println("execute"); 26.
if (pageContext.isLovEvent()) 29.
String lovInputSourceId = pageContext.getLovInputSourceId(); 32.
if(msgChoice.equalsIgnoreCase(lovInputSourceId)) 34.
Hashtable lovResults =pageContext.getLovResultsFromSession(lovInputSourceId); 35.
if (lovResults != null) 37.
Set entrySet=lovResults.entrySet(); 38.
Iterator iteResult=entrySet.iterator(); 39.
while(iteResult.hasNext()) 41.
Map.Entry me=(Map.Entry)iteResult.next(); 42.
String key=(String)me.getKey(); 43.
String value=(String)me.getValue(); 45.
if(criteria.equalsIgnoreCase(key)) 47.
Serializable[] params = { value }; 48.
am.invokeMethod(method,params);
1.
ChoiceOptionSelectorCommand choiceSelector=new ChoiceOptionSelectorCommand(pageContext,am); 3.
choiceSelector.execute("Organization","OrgId","changePositionChoiceOption");
Organization是MessageLovInput的名字,OrgId是Lov中LovMap里的Return对应的Item的名字, changePositionChoiceOption是AM中改变Choice选项列表的方法。 5 在Am中添加changePositionChoiceOption方法,以OrgId作为参数,实际上是调用PositionVO的查询方法,完成数据填充。 |