• OAViewObject中clearCache(),reset(),setMaxFetchSize(-1)的使用


    今天在页面跳转之后,明明执行了查询,且查询语句正确的情况下,页面不显示数据,且点击SubmitButton包浏览器后退异常。

    代码如下:

        OAViewObjectImpl vo=(OAViewObjectImpl)am.findViewObject("XXXVO1");
        vo.clearCache(); 
        vo.ExecuteQuery(headerid);
              
        public void ExecuteQuery(Number headerid)
        {
            clearCache();
            setWhereClauseParams(null);
            setWhereClauseParam(0, headerid);
            executeQuery();
    
        }

    打印日志发现:
    VO.getMaxFetchSize()==0;

    VO.getFetchRowCount()==0;

    所以页面不显示数据且触发POST数据时导致浏览器后退异常。

    代码修改为如下即正常。

        OAViewObjectImpl vo=(OAViewObjectImpl)am.findViewObject("XXXVO1");
        vo.clearCache(); 
        vo.reset();
        vo.setMaxFetchSize(-1);
        vo.ExecuteQuery(headerid);
              
        public void ExecuteQuery(Number headerid)
        {
            clearCache();
            setWhereClauseParams(null);
            setWhereClauseParam(0, headerid);
            executeQuery();
    
        }

    这使我对

        vo.clearCache(); 
        vo.reset();
        vo.setMaxFetchSize(-1);

    Use the VO reset and clear cache both in the processFormRequest before redirecting to page again as well as in processRequest before initializing the VO.

    But , Why???

    于是对这三个方法产生了强烈的兴趣。

    查询JDev Doc得到以下结果:

    关于clearCache()方法的官方文档介绍如下:

    clearCache
    public void clearCache()Clears the view object cache.
    This method can be called for resource conservation. Calling this method also forces an automatic re-execution of the query for all RowSets, which refreshes the cache from the database.


    Specified by:
    clearCache in interface ViewObject
    Overrides:
    clearCache in class OAJboViewObjectImpl

    关于reset()方法暂时未找到文档介绍。

    个人理解reset()方法会重置VO,包括VO中的指针。

    关于setMaxFetchSize()的官方文档介绍如下:

    setMaxFetchSize
    public void setMaxFetchSize(int size)Maximum number of rows to fetch when a query is executed. This number takes effect the next time a query is executed.
    Passing '-1' will retrieve all the rows. This is default behavior. (For OA Framework view objects, however, OA Framework initializes the maximum fetch size to be the value specified by "VO_MAX_FETCH_SIZE" profile option value.)

     

    Passing '0' will result in the database query not being executed and also mark the view object as properly prepared for query execution.

     

    Specified by:
    setMaxFetchSize in interface ViewObject
    Overrides:
    setMaxFetchSize in class ViewObjectImpl
    Parameters:
    size - maximum number of rows to fetch
    See Also:
    executeQuery(), isPreparedForExecution(), setPreparedForExecution(boolean flag)

  • 相关阅读:
    利用Airtest开发爬虫
    添加mitmproxy证书为安卓系统证书(模拟器亦可)
    mac下 安卓模拟器抓包推荐
    mac上appium连接ios
    HomeBrew和HomeBrew Cask的安装和使用
    NOIP2020 游记
    CSP2020 游记
    随机数之 xorShift128Plus 板子
    最大单词长度乘积(力扣第318题)
    两个整数之和(力扣第371题)
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/5373307.html
Copyright © 2020-2023  润新知