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
to apply the new bind value.RowSet.executeQuery()