ADF中如何将两个独立的LOV实现级联


在网上看到很多基于一个VO中的两个Atttribute的LOV实现级联的例子,本文描述如何将两个独立的LOV实现级联,以Oracle实例数据库HR中的DEPARTMENTS和LOCATIONS两个表为例,根据DEPARTMENT中的列location_id过滤department列表的值。

程序包请到以下连接下载

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.com

具体下载目录在 /2012年资料/2月/23日/ADF中如何将两个独立的LOV实现级联 /

1.建立ADF项目DepartmentView的Query如下

[sql]
  1. SELECT Departments.DEPARTMENT_ID,   
  2. Departments.DEPARTMENT_NAME,   
  3. Departments.MANAGER_ID,   
  4. Departments.LOCATION_ID  
  5. FROM DEPARTMENTS Departments  
  6. WHERE (Departments.LOCATION_ID = :locationId or :locationId is null)  

locationId的值设置为adf.context.requestScope.

locationIdvlaueType选择Expression

2.建Backing Bean

[java]

  1. package view;  
  2.   
  3. import javax.faces.component.UIComponent;  
  4. import javax.faces.event.ValueChangeEvent;  
  5.   
  6. import oracle.adf.model.binding.DCIteratorBinding;  
  7. import oracle.adf.share.ADFContext;  
  8.   
  9. import oracle.jbo.Row;  
  10. import oracle.jbo.server.ViewRowImpl;  
  11. import oracle.jbo.uicli.binding.JUCtrlListBinding;  
  12. import oracle.jbo.uicli.binding.JUIteratorBinding;  
  13.   
  14. public class CascadeLOVBean {  
  15.     /** 
  16.      * 要获取触发LOV的属性 
  17.      */  
  18.     private String attributeName;   
  19.     /** 
  20.      * 要传的参数名 
  21.      */  
  22.     private String parameterName;  
  23.     /** 
  24.      * 触发LOV的List Binding 
  25.      */  
  26.     private JUCtrlListBinding listBinding;  
  27.     /** 
  28.      * 被触发LOV的Iterator Binding 
  29.      */  
  30.     private DCIteratorBinding iteratorBinding;  
  31.       
  32.       
  33.     public CascadeLOVBean() {  
  34.         super();  
  35.     }  
  36.     //获取下触发下拉列表的值,并将值放入Request Scope,VO中使用Groovy表达式取得   
  37.     public void valueChangeListener(ValueChangeEvent valueChangeEvent) {  
  38.         if (valueChangeEvent.getNewValue() != valueChangeEvent.getOldValue()) {  
  39.             Integer newValue = (Integer)valueChangeEvent.getNewValue();  
  40.             ViewRowImpl row = (ViewRowImpl)listBinding.getValueFromList(newValue);  
  41.             Object paramValue = row.getAttribute(attributeName);   
  42.             ADFContext.getCurrent().getRequestScope().put(parameterName, paramValue);  
  43.             iteratorBinding.executeQuery();  
  44.         }  
  45.     }  
  46.       
  47.     public void setListBinding(JUCtrlListBinding listBinding) {  
  48.         this.listBinding = listBinding;  
  49.     }  
  50.   
  51.     public JUCtrlListBinding getListBinding() {  
  52.         return listBinding;  
  53.     }  
  54.   
  55.     public void setIteratorBinding(DCIteratorBinding iteratorBinding) {  
  56.         this.iteratorBinding = iteratorBinding;  
  57.     }  
  58.   
  59.     public DCIteratorBinding getIteratorBinding() {  
  60.         return iteratorBinding;  
  61.     }  
  62.   
  63.     public void setAttributeName(String attributeName) {  
  64.         this.attributeName = attributeName;  
  65.     }  
  66.   
  67.     public String getAttributeName() {  
  68.         return attributeName;  
  69.     }  
  70.   
  71.     public void setParameterName(String parameterName) {  
  72.         this.parameterName = parameterName;  
  73.     }  
  74.   
  75.     public String getParameterName() {  
  76.         return parameterName;  
  77.     }  
  78. }  
  • 1
  • 2
  • 下一页

相关内容