默认情况下,ADF的table组件 会在页面加载时,运行绑定的query,返回一个结果集。但有些页面不需要table自动执行绑定的view object的query,比如说一个查询页面,在没有输入查询条件的情况下,不希望自动执行默认的SQL,这样有可能会使最终用户迷惑。今天研究了下,比较正确的方式是在进入该页面前,先执行viewobject的executeEmptyRowSet()方法。
可以先创建一个ViewObjectImpl扩展类:
package com.xy.scpms.model.common;
import oracle.jbo.server.ViewDefImpl;
import oracle.jbo.server.ViewObjectImpl;
public class NoAutoQueryView extends ViewObjectImpl {
public NoAutoQueryView(String string, ViewDefImpl viewDefImpl) {
super(string, viewDefImpl);
}
public NoAutoQueryView() {
super();
}
public void clearRowSet(){
executeEmptyRowSet();
}
}
然后在一个View中选择Extend这个类,并在ViewObject的 client interface中加入该方法,使其可以在taskflow中被调用。
最后在taskflow中,将该方法作为一个method call Activity 放在页面之前执行。