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)

  • 相关阅读:
    Visual Studio Installer打包安装项目VS2015
    在WinCE上播放声音、设置透明图片、系统音量 C#
    虚函数、抽象函数以及接口的区别
    Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected.
    项目中重新引用WCF报错
    为什么0.1+0.2=0.30000000000000004
    MVC自定义错误页404静态页
    DP 网易内推:合唱团
    TFBOY 养成记 一些比较好多文章。
    机器学习笔记:为什么要对数据进行归一化处理?
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/5373307.html
Copyright © 2011-2022 走看看