zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    [Functional Programming] Building a Timer UI by Composing Callbacks
    [Debug] Use Chrome DevTools console utilities to make debugging easier
    [Debug] Copy a network request as fetch or cURL with Chrome DevTools
    [CSS] Use CSS Variables with Calc and HSL to Implement Dark Mode
    [Kotlin] Adding functions to existing classes (extension functions)
    [Kotlin] Unit testing throws exception
    [Kotlin] Try resource, use {} block
    少儿编程教学环境开发之架构选型篇
    分布式系统理论之Quorum机制
    存储基本概念(lun,volume,HBA,DAS,NAS,SAN,iSCSI,IPSAN)
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/5373307.html
Copyright © 2011-2022 走看看