2007-10-26

在纯struts下使用ECSide的一点疑惑

关键字: ECSide

知道ECSide有段时间了,但一直都没尝试使用。最近在尝试使用,但发现一个很不解的疑问。在用ECSide进行翻页,排序等操作试,action会被多次执行。action里调用DAO从取LIST的方法也被执行。这样每操作一次(翻页,或排序等),action就被执行一次,List也被从新取了一次,导致响应很慢。

JSP里的代码

xml 代码
  1. <link rel="stylesheet" type="text/css" href="<%=webapp%>/ecside/css/ecside_style.css" />  
  2. <script type="text/javascript" src="<%=webapp%>/ecside/js/prototype_mini.js" ></script>  
  3. <script type="text/javascript" src="<%=webapp%>/ecside/js/ecside_msg_utf8_cn.js"></script>  
  4. <script type="text/javascript" src="<%=webapp%>/ecside/js/ecside.js" ></script>  
  5. </head>  
  6. <body>  
  7.  <ec:table items="users" var="user" retrieveRowsCallback="process"  
  8.      sortable="true" action="${pageContext.request.contextPath}/ShowUserList.do"  
  9.     rowsDisplayed="5" title="任务信息" width="80%" pageSizeList="2,5,10,50">  
  10.   <ec:row>  
  11.    <ec:column width="20" property="_0" title="序号" value="${GLOBALROWCOUNT}"/>  
  12.    <ec:column width="150" property="userid" title="用户ID" />  
  13.    <ec:column width="150" property="realname" title="用户姓名"/>  
  14.    <ec:column width="150" property="dwid" title="单位ID"/>               
  15.    </ec:row>  
  16.   </ec:table>  

(我试着将ec:table 里的action属性设为显示该列表的JSP页面“userlist.jsp”,这样的话第一次打开页面是正常的,一但对列表经行任何错作,翻页,排序等,列表就变空了,右下脚纪录信息栏显示无任何纪录)

action里的主要代码

java 代码
  1. public ActionForward ShowUserkList(ActionMapping mapping, ActionForm form,   
  2.     HttpServletRequest request, HttpServletResponse response) {   
  3.     List userlist = new UserDAO().findAllUser();   
  4.     request.setAttribute("users", userlist);   
  5.     return mapping.findForward("success");   
  6. }  

 

不知道大家出现这种问题没?如何解决的????

评论
flysky9820000 2008-03-20
keanfly说的问题也是数据库分页时使用的,ecside2.0rc1这个版本支持预查询功能;也就是说数据库里本来只查询当前显示的页面(如当前显示第2页就只查第2页的内容),但在ecside里是把前后2页也查出来的(如查第2页时就会把第1和第3页也查出来)。doPreload=“false”的意思就是关闭这个预查询功能,action="${pageContext.request.contextPath}/ShowUserList.do"这样写还是会进入action的。fina的博客里有这个版本的文档,可以看看就知道了。
flysky9820000 2008-03-20
呵呵,海盗兄,你把action="${pageContext.request.contextPath}/ShowUserList.do"这句改成
action=""
你在struts里是一次查出所有记录的,这样改后ecside就知道自己从缓存读数据了;
你上面的情况是用于数据库物理分页时使用的;
keanfly 2008-03-06
Attribute doPreload invalid for tag table according to TLD
我用doPreload为何出现上面这种错误呢?
在<ec:table>中使用doPreload="false"
JaNer 2007-10-31
我也遇到这问题了,doPreload=“false”确实没起到作用!不知如何解决啊?
王牌海盗 2007-10-26
郁闷啊。我把doPreload=“false”关了怎么还是不行啊
lijun96 2007-10-26
感谢楼主,我也遇到这样的问题,把预读关了就好了。我们项目里现在在大量使用ecside,不知道在websphere上会不会有什么问题?
王牌海盗 2007-10-26
把doPreload=“false”?
中午回去试一试。
lxxing 2007-10-26
将预读功能关闭就不会了
王牌海盗 2007-10-26
忘了说了,使用的是ecside_2.0_RC1这个版本。
发表评论

您还没有登录,请登录后发表评论

王牌海盗
搜索本博客
我的相册
Be6c527b-327f-4358-be5b-0addf0fb2c76-thumb
map-java
共 5 张
最近加入圈子
存档
最新评论