ADF VO知识

1 获取VO中标签,tip等信息,参考EO知识

        ApplicationModule am = this.getApplicationModule();
        LocaleContext loc = am.getSession().getLocaleContext();
        ViewImpl viewImpl = am.findViewObject("myView1");
    
        AttributeDef[] attributeDefs = viewImpl.getAttributeDefs();
        for (int i = 1; i < attributeDefs.length; i++) {
            AttributeDef attr = xsViewImpl.getAttributeDef(i);
 
            AttributeHints attHit = attr.getUIHelper();
 
            System.out.println("属性名: " + attr.getName() + " 属性中文名: " +
                               attHit.getLabel(loc));
        }

2 在VO 执行查询前设置查询参数:

在VO的实现类中override一个方法:

        

    @Override
    protected void executeQueryForCollection(Object object, Object[] object2,
                                             int i) {
        super.executeQueryForCollection(object, object2, i);
    }
3 获取VO中属性修改前的值:

        CountriesViewRowImpl countriesRowImpl =
            (CountriesViewRowImpl)ADFUtils.findIterator("CountriesView1Iterator").getCurrentRow();
       ;
        System.out.println("原来的始:"+ countriesRowImpl.getOriginalAttributeValue("CountryName"));
        System.out.println("现在的值:"+ADFUtils.getBoundAttributeValue("CountryName"));
4 vo中正确的迭代:

        RowSetIterator it = vo.createRowSetIterator(null);
        it.reset();
        while(it.hasNext()){
            Row r=it.next();
        }

  因为如果在页面上有绑定此vo以table展现,不用此方式的话会导致少迭代一条记录的问题出现.

5 VO中Row的刷新:

adf提供了6种刷新模式:

    public static final int QUERY_MODE_SCAN_VIEW_ROWS;
    public static final int QUERY_MODE_SCAN_ENTITY_ROWS;
    public static final int QUERY_MODE_SCAN_DATABASE_TABLES;

    public static final int QUERY_MODE_SCAN_UNPOSTED_ENTITY_ROWS;
    public static final int QUERY_MODE_SKIP_WHERE;
    public static final int QUERY_TIMEOUT_WAIT_FOREVER;

        countriesRowImpl.refresh(ViewObject.QUERY_MODE_SCAN_ENTITY_ROWS);//扫描Entity刷新


6 VO中多个View Criteria的应用:

public void showMaleCustomers() {
        ViewCriteriaManager vcm = getViewCriteriaManager();
        ViewCriteria vc_gender = vcm.getViewCriteria("GenderIsNotFCriteria");
        ViewCriteria vc_type = vcm.getViewCriteria("IsCustomerCriteria");
        VariableValueManager vvm_gender = vc_gender.ensureVariableManager();
        VariableValueManager vvm_type = vc_type.ensureVariableManager();
        vvm_gender.setVariableValue("bv_Gender","F");
        vvm_type.setVariableValue("bv_PersonTypeCode", "CUST");
        setApplyViewCriteriaNames(new String[]{"GenderIsNotFCriteria",
                                                        "IsCustomerCriteria"});
    }

    public void showFemaleStaff() {
        ViewCriteriaManager vcm = getViewCriteriaManager();
        ViewCriteria vc_gender = vcm.getViewCriteria("GenderIsFCriteria");
        ViewCriteria vc_type = vcm.getViewCriteria("IsStaffSupplierCriteria");
        VariableValueManager vvm_gender = vc_gender.ensureVariableManager();
        VariableValueManager vvm_type = vc_type.ensureVariableManager();
        vvm_gender.setVariableValue("bv_Gender","F");
        vvm_type.setVariableValue("bv_PersonTypeCode", "CUST");
        setApplyViewCriteriaNames(new String[]{"GenderIsFCriteria",
                                                     "IsStaffSupplierCriteria"});
        executeQuery();
    }

    public void showFemaleCustomers() {
        ViewCriteriaManager vcm = getViewCriteriaManager();
        ViewCriteria vc_gender = vcm.getViewCriteria("GenderIsFCriteria");
        ViewCriteria vc_type = vcm.getViewCriteria("IsCustomerCriteria");
        VariableValueManager vvm_gender = vc_gender.ensureVariableManager();
        VariableValueManager vvm_type = vc_type.ensureVariableManager();
        vvm_gender.setVariableValue("bv_Gender","F");
        vvm_type.setVariableValue("bv_PersonTypeCode", "CUST");
        setApplyViewCriteriaNames(new String[]{"GenderIsFCriteria",
                                                   "IsCustomerCriteria"});
        executeQuery();


7 VO中通过代码给绑定查询变量赋值的方法:

        ViewObject vo = am.findViewObject("EmployeesView1");
        VariableValueManager vm = vo.ensureVariableManager();
        vm.setVariableValue("bindVarDeptId", deptId);
尽量不要使用

        viewObject.setNamedWhereClauseParam("bindVarDeptId", "IT");
因为如何此VO有多个RowSet时,此条件只会用于默认的那个.API有详细介绍:

	public void setNamedWhereClauseParam(java.lang.String name,
                                     java.lang.Object value)
Description copied from interface: RowSet
Sets the value of a named where-clause parameter for this row set.

If the view object owns multiple row sets, each row set may have its own (different) named where-clause parameter value.

Setting a named where-clause parameter does not automatically execute the query. You must call RowSet.executeQuery() to apply the new bind value.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值