<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    零雨其蒙's Blog

    做優秀的程序員
    隨筆 - 59, 文章 - 13, 評論 - 58, 引用 - 0
    數據加載中……

    MessageLovInput級聯MessageChoice

    案例:通過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中寫下如下代碼:

     

    Java代碼 
    1. if (pageContext.isLovEvent())  
    2.     {  
    3.         
    4.         String lovInputSourceId = pageContext.getLovInputSourceId();  
    5.          
    6.        if("OrganizationLovInput".equalsIgnoreCase(lovInputSourceId))  
    7.        {  
    8.            Hashtable lovResults =pageContext.getLovResultsFromSession(lovInputSourceId);  
    9.             if (lovResults != null)  
    10.             {  
    11.                 Set entrySet=lovResults.entrySet();  
    12.                 Iterator iteResult=entrySet.iterator();  
    13.                while(iteResult.hasNext())  
    14.                {  
    15.                     Map.Entry me=(Map.Entry)iteResult.next();  
    16.                     String key=(String)me.getKey();  
    17.                     String value=(String)me.getValue();  
    18.                     
    19.                      
    20.                     if("OrgId".equalsIgnoreCase(key))  
    21.                      {                     
    22.                       Serializable[] params = { value };  
    23.                         
    24.                     <span style="background-color: #ffff00;">  am.invokeMethod("changePositionChoiceOption",params);</span>  
    25.                      }  
    26.                }                
    27.               
    28.             }  
    29.        }  
    30.         
    31.     }  
    32.       

     

          由于項目中多處使用這堆代碼,就寫了個POJO:

     

    Java代碼 
    1. import oracle.apps.fnd.framework.webui.OAPageContext;  
    2. import oracle.apps.fnd.framework.OAApplicationModule;  
    3. import java.util.Hashtable;  
    4. import java.util.Set;  
    5. import java.util.Iterator;  
    6. import java.util.Map;  
    7. import java.io.Serializable;  
    8.   
    9. public class ChoiceOptionSelectorCommand   
    10. {  
    11.   private  OAPageContext pageContext;  
    12.   private  OAApplicationModule am;  
    13.   public ChoiceOptionSelectorCommand()  
    14.   {  
    15.   }  
    16.   
    17.    public ChoiceOptionSelectorCommand(OAPageContext pageContext,OAApplicationModule am)  
    18.   {  
    19.     this.pageContext=pageContext;  
    20.     this.am=am;  
    21.   }  
    22.   
    23.   public  void execute(String msgChoice,String criteria,String method)  
    24.   {  
    25.     System.out.println("execute");  
    26.      if (pageContext.isLovEvent())  
    27.      {  
    28.         
    29.          String lovInputSourceId = pageContext.getLovInputSourceId();  
    30.           
    31.       
    32.         if(msgChoice.equalsIgnoreCase(lovInputSourceId))  
    33.         {  
    34.             Hashtable lovResults =pageContext.getLovResultsFromSession(lovInputSourceId);  
    35.              if (lovResults != null)  
    36.              {  
    37.                  Set entrySet=lovResults.entrySet();  
    38.                  Iterator iteResult=entrySet.iterator();  
    39.                 while(iteResult.hasNext())  
    40.                 {  
    41.                      Map.Entry me=(Map.Entry)iteResult.next();  
    42.                      String key=(String)me.getKey();  
    43.                      String value=(String)me.getValue();  
    44.                             
    45.                      if(criteria.equalsIgnoreCase(key))  
    46.                       {                     
    47.                        Serializable[] params = { value };                        
    48.                        am.invokeMethod(method,params);  
    49.                       }  
    50.                 }                
    51.                
    52.              }  
    53.         }  
    54.          
    55.      }  
    56.   }  
    57. }  

     

        可以在Controller里這樣調用:

        

    Java代碼 
    1. ChoiceOptionSelectorCommand choiceSelector=new ChoiceOptionSelectorCommand(pageContext,am);  
    2.         
    3.     choiceSelector.execute("Organization","OrgId","changePositionChoiceOption");  

        Organization是MessageLovInput的名字,OrgId是Lov中LovMap里的Return對應的Item的名字, changePositionChoiceOption是AM中改變Choice選項列表的方法。

     

       5 在Am中添加changePositionChoiceOption方法,以OrgId作為參數,實際上是調用PositionVO的查詢方法,完成數據填充。

    posted on 2011-08-02 13:30 零雨其蒙 閱讀(482) 評論(1)  編輯  收藏 所屬分類: Oracle EBS

    評論

    # re: MessageLovInput級聯MessageChoice  回復  更多評論   

    Hashtable lovResults =pageContext.getLovResultsFromSession(lovInputSourceId);
    Set entrySet=lovResults.entrySet();
    Iterator iteResult=entrySet.iterator();
    對于上面用lovResults獲得集合Set我有新的見解,說出來與大家一起討論。
    因為選擇LOV的值,只能選擇一條記錄,所以可以不用Set集合來取值,
    用String orgID = lovResults.get("OrgId");
    Serializable[] params = { orgID };
    am.invokeMethod("changePositionChoiceOption",params);
    2013-07-14 16:23 | 柳生

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 又大又硬又爽免费视频| 久久精品国产亚洲夜色AV网站| 国产精品亚洲综合| 亚洲大尺度无码无码专区| 182tv免费视视频线路一二三| 亚洲成a∧人片在线观看无码 | 国产亚洲人成无码网在线观看| 一级毛片在线免费观看| 亚洲一区二区三区写真| 亚洲日韩精品无码一区二区三区| 久久久久久精品免费看SSS| 老司机免费午夜精品视频| 亚洲福利电影在线观看| 亚洲国产成人久久精品99| 99精品一区二区免费视频| 牛牛在线精品免费视频观看| 亚洲欧洲日产国码二区首页 | 亚洲国产精品丝袜在线观看| 在线看片免费人成视久网| 欧洲亚洲综合一区二区三区| 久久久久亚洲精品天堂| 亚洲成A∨人片天堂网无码| 亚洲不卡av不卡一区二区| 成人免费看黄20分钟| 你懂的免费在线观看网站| 黄色一级免费网站| 国产99在线|亚洲| 国产亚洲精品a在线无码| 四虎永久精品免费观看| 真人做人试看60分钟免费视频| 在线看片免费人成视频久网下载| 亚洲乱理伦片在线观看中字| 亚洲首页在线观看| 亚洲国产AV无码专区亚洲AV| 亚洲无码一区二区三区| 亚洲乱亚洲乱淫久久| 亚洲熟妇av一区二区三区漫画| 日韩精品无码人妻免费视频| a毛片基地免费全部视频| 99re6在线视频精品免费下载| sihu国产精品永久免费|