标签:
今天在页面跳转之后,明明执行了查询,且查询语句正确的情况下,页面不显示数据,且点击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()方法暂时未找到文档介绍。
关于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)
OAViewObject中clearCache(),reset(),setMaxFetchSize(-1)的使用
标签:
原文地址:http://www.cnblogs.com/huanghongbo/p/5373307.html