ADF中如何将两个独立的LOV实现级联
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]- SELECT Departments.DEPARTMENT_ID,
- Departments.DEPARTMENT_NAME,
- Departments.MANAGER_ID,
- Departments.LOCATION_ID
- FROM DEPARTMENTS Departments
- WHERE (Departments.LOCATION_ID = :locationId or :locationId is null)
locationId的值设置为adf.context.requestScope.
locationIdvlaueType选择Expression
2.建Backing Bean
[java]
- package view;
- import javax.faces.component.UIComponent;
- import javax.faces.event.ValueChangeEvent;
- import oracle.adf.model.binding.DCIteratorBinding;
- import oracle.adf.share.ADFContext;
- import oracle.jbo.Row;
- import oracle.jbo.server.ViewRowImpl;
- import oracle.jbo.uicli.binding.JUCtrlListBinding;
- import oracle.jbo.uicli.binding.JUIteratorBinding;
- public class CascadeLOVBean {
- /**
- * 要获取触发LOV的属性
- */
- private String attributeName;
- /**
- * 要传的参数名
- */
- private String parameterName;
- /**
- * 触发LOV的List Binding
- */
- private JUCtrlListBinding listBinding;
- /**
- * 被触发LOV的Iterator Binding
- */
- private DCIteratorBinding iteratorBinding;
- public CascadeLOVBean() {
- super();
- }
- //获取下触发下拉列表的值,并将值放入Request Scope,VO中使用Groovy表达式取得
- public void valueChangeListener(ValueChangeEvent valueChangeEvent) {
- if (valueChangeEvent.getNewValue() != valueChangeEvent.getOldValue()) {
- Integer newValue = (Integer)valueChangeEvent.getNewValue();
- ViewRowImpl row = (ViewRowImpl)listBinding.getValueFromList(newValue);
- Object paramValue = row.getAttribute(attributeName);
- ADFContext.getCurrent().getRequestScope().put(parameterName, paramValue);
- iteratorBinding.executeQuery();
- }
- }
- public void setListBinding(JUCtrlListBinding listBinding) {
- this.listBinding = listBinding;
- }
- public JUCtrlListBinding getListBinding() {
- return listBinding;
- }
- public void setIteratorBinding(DCIteratorBinding iteratorBinding) {
- this.iteratorBinding = iteratorBinding;
- }
- public DCIteratorBinding getIteratorBinding() {
- return iteratorBinding;
- }
- public void setAttributeName(String attributeName) {
- this.attributeName = attributeName;
- }
- public String getAttributeName() {
- return attributeName;
- }
- public void setParameterName(String parameterName) {
- this.parameterName = parameterName;
- }
- public String getParameterName() {
- return parameterName;
- }
- }
|
评论暂时关闭