[ECSide] ecside 存在多次执行Action的bug
changkui
2007-04-04
在经典的struts中使用ecside组件,对于存在分页的情况,会多次执行Action。
拿ecside1.3中的demo: 传统Action/servlet方式,当点击该链接时,会发现程序会连续两次执行相应的Action,同时后天会输出以下信息:2007-4-4 13:33:33 org.apache.tomcat.util.http.Parameters processParameters 警告: Parameters: Invalid chunk ignored. 对于单页情况,不存在上述问题! 请作者检查一下该问题! 谢谢! |
|
fins
2007-04-04
两次是正常的 因为会预读取下一页 你说的Parameters: Invalid chunk ignored问题我再查一下吧
谢谢提示 |
|
小天蝎
2007-04-27
我这里也出现了同样的情况
网上搜索没找到什么信息 |
|
joe_qlb
2007-04-27
我这边也有Parameters: Invalid chunk ignored提示
|
|
sharong
2007-04-29
我在页面链接中使用struts的.do方式,通过action类后进入包含ecside标签的列表页,显示为空白页,页面左下方js总是提示edsideutil未定义,查了一下,这是个js变量,在ecside.js里有定义,我已经在页头引入了ecside.js。
而当我按照ecside2.0带的例子那样偷懒,将获得结果集的代码写在页面上时,却可以正确显示页面,这是bug还是不支持这种功能? 另外:即使按照后面的方式获得结果集,翻页功能似乎不起作用,左上角显示正在提交后,页面就一直处于运行状态了,好几分钟后仍然是那样。 在控制台上打印了大概十几个select语句,大致如下: Hibernate: select tdship0_.PORT_SHIP_SEQ as PORT1_0_, tdship0_.SHIP_ID as SHIP2_0_, ... ... from td_ship tdship0_ where 1=1 所有的sql语句都相同,似乎是死循环 |
|
fins
2007-04-29
STRUTS版本?
还有能否把JSP页面帖上来看看 谢谢 |
|
sharong
2007-04-30
程序的架构为struts1.x+spring1.2.9+hibernate3.2.3
如果我在Action类里编写如下代码 public class DemoAction extends DispatchAction { private static final Log logger = LogFactory.getLog(DemoAction.class); public ActionForward search(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { List list = demoService.getTdShipList(); request.setAttribute("records", list); logger.info(DemoAction.class + " readlly to forward the list page ... "); return mapping.findForward("demolist"); } } 那么跳转至demoList.jsp时,显示为空白页,页面左下方js总是提示edsideutil未定义,demoList.jsp的代码和democlassic.jsp基本一致,就是在页面去掉了获得records的java代码,同时,页头显示如下: <%@ page language="java" contentType="text/html;charset=UTF-8" %> <%@ taglib uri="/WEB-INF/ecside.tld" prefix="ec" %> 不知道为什么我直接使用<%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %>程序报错,只好改成本地tld文件了,现在都是jsp1.2了吧 而jsp页面中,类似democlassic.jsp那样来获得records集合时,列表页的首页是可以显示的,只是翻页出现等待。 |
|
sharong
2007-04-30
这是我的服务端解释jsp后生成的静态文件的内容:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <meta http-equiv="MSThemeCompatible" content="no" /> <link rel="stylesheet" type="text/css" href="/Seaport/css/ecside_style.css" /> <script type="text/javascript" src="/Seaport/js/prototype_mini.js"></script> <script type="text/javascript" src="/Seaport/js/ecside.js"></script> <title>Demo</title> </head> <body> <form id="ec" method="post" style="width:100%;visibility :hidden;" nearPages="3" maxRowsExported="1000000" minColWidth="45" action="/Seaport/demo/demo.do?operation=search" > <div class="ecSide" id="ec_main_content" style="width:100%;" > <!-- ECS_AJAX_ZONE_PREFIX__begin_ ec_ECS_AJAX_ZONE_SUFFIX --> <div> <input type="hidden" name="ec_i" value="ec" /> <input type="hidden" name="ec_efn" /> <input type="hidden" name="ec_crd" value="10" /> <input type="hidden" name="ec_p" value="1" /> <input type="hidden" name="ec_s__0" /> <input type="hidden" name="ec_s_shipNameCn" /> <input type="hidden" name="ec_s_voyageNo" /> <input type="hidden" name="ec_s_totalTons" /> <input type="hidden" name="ec_s_toCountry" /> <input type="hidden" name="operation" value="search" /> <input type="hidden" name="ec_totalpages" value="12" /> <input type="hidden" name="ec_totalrows" value="114" /> </div> <div style="width:100%;" class="gridTitle" >Demo列表</div> <table id="ec_table" border="0" cellspacing="0" cellpadding="0" class="tableRegion" width="100%" > <thead id="ec_table_head" ><tr><td valign="middle" columnName="_0" sortable="true" editTemplate="ecs_t_input" width="50" class="tableHeader" onmouseover="ECSideUtil.lightHeader(this,'ec');" onmouseout="ECSideUtil.unlightHeader(this,'ec');" oncontextmenu="ECSideUtil.showColmunMenu(event,this,'ec');" onmouseup="ECSideUtil.doSort(event,'_0','asc','ec');" title="排序 序号" ><span class="columnSeparator" > </span><div class="headerTitle" >序号</div></td> <td valign="middle" columnName="shipNameCn" sortable="true" editTemplate="ecs_t_input" width="200" class="tableHeader" onmouseover="ECSideUtil.lightHeader(this,'ec');" onmouseout="ECSideUtil.unlightHeader(this,'ec');" oncontextmenu="ECSideUtil.showColmunMenu(event,this,'ec');" onmouseup="ECSideUtil.doSort(event,'shipNameCn','asc','ec');" title="排序 中文船名" ><span class="columnSeparator" > </span><div class="headerTitle" >中文船名</div></td> <td valign="middle" columnName="voyageNo" sortable="true" editTemplate="ecs_t_input" class="tableHeader" onmouseover="ECSideUtil.lightHeader(this,'ec');" onmouseout="ECSideUtil.unlightHeader(this,'ec');" oncontextmenu="ECSideUtil.showColmunMenu(event,this,'ec');" onmouseup="ECSideUtil.doSort(event,'voyageNo','asc','ec');" title="排序 航次号" ><span class="columnSeparator" > </span><div class="headerTitle" >航次号</div></td> <td valign="middle" columnName="totalTons" sortable="true" editTemplate="ecs_t_input" width="50" class="tableHeader" onmouseover="ECSideUtil.lightHeader(this,'ec');" onmouseout="ECSideUtil.unlightHeader(this,'ec');" oncontextmenu="ECSideUtil.showColmunMenu(event,this,'ec');" onmouseup="ECSideUtil.doSort(event,'totalTons','asc','ec');" title="排序 货物总吨数" ><span class="columnSeparator" > </span><div class="headerTitle" >货物总吨数</div></td> <td valign="middle" columnName="toCountry" sortable="true" editTemplate="ecs_t_input" width="200" class="tableHeader" onmouseover="ECSideUtil.lightHeader(this,'ec');" onmouseout="ECSideUtil.unlightHeader(this,'ec');" oncontextmenu="ECSideUtil.showColmunMenu(event,this,'ec');" onmouseup="ECSideUtil.doSort(event,'toCountry','asc','ec');" title="排序 抵达港国家名称" ><span class="columnSeparator" > </span><div class="headerTitle" >抵达港国家名称</div></td> </tr> </thead> <tbody id="ec_table_body" > <tr class="odd " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >1</td> <td width="200" >恒裕</td> <td >0427W</td> <td width="50" >00293895</td> <td width="200" > </td> </tr> <tr class="even " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >2</td> <td width="200" >新重庆</td> <td >PX036W</td> <td width="50" >00433719</td> <td width="200" > </td> </tr> <tr class="odd " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >3</td> <td width="200" >德利明珠</td> <td >PP008N</td> <td width="50" >00392605</td> <td width="200" > </td> </tr> <tr class="even " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >4</td> <td width="200" >晓星</td> <td >BS035N</td> <td width="50" >00540578</td> <td width="200" > </td> </tr> <tr class="odd " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >5</td> <td width="200" >晓峰</td> <td >P0206N</td> <td width="50" >00575083</td> <td width="200" > </td> </tr> <tr class="even " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >6</td> <td width="200" >HYUNDAI INNOVATOR</td> <td >502W</td> <td width="50" >00000248</td> <td width="200" > </td> </tr> <tr class="odd " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >7</td> <td width="200" >意珍</td> <td >6-029E</td> <td width="50" >01039709</td> <td width="200" > </td> </tr> <tr class="even " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >8</td> <td width="200" >渣华香港</td> <td >42E26</td> <td width="50" >00019953</td> <td width="200" > </td> </tr> <tr class="odd " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >9</td> <td width="200" >中海宁波</td> <td >0034E</td> <td width="50" >01415631</td> <td width="200" > </td> </tr> <tr class="even " onclick="ECSideUtil.selectRow(this,'ec');" onmouseover="ECSideUtil.lightRow(this,'ec');" onmouseout="ECSideUtil.unlightRow(this,'ec');" > <td width="50" >10</td> <td width="200" >YANG JIANG HE</td> <td >146N</td> <td width="50" >00502445</td> <td width="200" > </td> </tr> </tbody> </table><iframe style="border:0px;" marginwidth="0" marginheight="0" frameborder="0" border="0" width="0" height="0" id="ec_ecs_export_iframe" name="ec_ecs_export_iframe" ></iframe> <div id="ec_toolbar" class="toolbar" style="width:100%;" > <table id="ec_toolbarTable" class="toolbarTable" cellpadding="0" cellspacing="0" ><tr><td class="pageNavigationTool" nowrap="nowrap" ><input type="button" disabled="disabled" class="pageNav firstPageD" onclick="ECSideUtil.gotoPage(1,'ec');" title="第一页" /><input type="button" disabled="disabled" class="pageNav prevPageD" onclick="ECSideUtil.gotoPage(0,'ec');" title="上一页" disabled="disabled" /></td><td class="pageNavigationTool" nowrap="nowrap" ><input type="button" class="pageNav nextPage" onclick="ECSideUtil.gotoPage(2,'ec');" title="下一页" /><input type="button" class="pageNav lastPage" onclick="ECSideUtil.gotoPage(12,'ec');" title="最末页" /></td> <td class="separatorTool" > </td> <td class="pageJumpTool" nowrap="nowrap" onmouseover="ECSideUtil.NearPagesBar.showMe(this,'ec');" onmouseout="ECSideUtil.NearPagesBar.hideMe(this,'ec');" ><nobr><input type="button" class="pageNav jumpPage" onclick="ECSideUtil.gotoPageByInput(this,'ec');" /><input type="text" name="ec_pg" value="1" class="jumpPageInput" onkeydown="if (event.keyCode && event.keyCode==13 ) {ECSideUtil.gotoPageByInput(this,'ec');;return false; } " />/12页</nobr></td> <td class="separatorTool" > </td> <td class="pageSizeTool" nowrap="nowrap" >每页<select name="ec_rd" onchange="ECSideUtil.changeRowsDisplayed('ec',this);" > <option value="10" selected="selected">10</option> </select>条</td> <td class="separatorTool" > </td> <td nowrap="nowrap" class="refreshTool" ><nobr><input type="button" class="toolButton girdRefresh" onclick="ECSideUtil.reload('ec');" /></nobr></td> <td class="separatorTool" > </td> <td nowrap="nowrap" class="exportTool" ><nobr></nobr></td> <td class="separatorTool" > </td> <td class="extendTool" ></td> <td class="separatorTool" > </td> <td nowrap="nowrap" class="statusTool" ><nobr>共114条记录,显示1到10</nobr></td> </tr> </table></div><div id="ec_toolbarShadow" style="display:none;" ></div> <!-- ECS_AJAX_ZONE_PREFIX_ _end_ec_ECS_AJAX_ZONE_SUFFIX --> </div> </form><div id="ec_waitingBar" class="waitingBar" ></div><div id="ec_waitingBarCore" class="waitingBarCore" ></div> <script type="text/javascript" > (function(){ var gird=ECSideUtil.createGird('ec'); gird.useAjax=true; gird.doPreload=true; gird.isClassic=true; })(); </script> </body> </html> 在页面最下方var gird=ECSideUtil.createGird('ec'); 这一句出现错误,js提示ECSideUtil未定义 |
|
sharong
2007-04-30
如果使用eXtremeComponents的标签,即在jsp页头写这个语句<%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %>,出现下面的错误:
HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: /demo/demoList.jsp(19,0) Attribute pageSizeList invalid for tag table according to TLD org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:234) org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:989) org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:710) org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219) org.apache.jasper.compiler.Node$Root.accept(Node.java:456) ... ... 在fins的demo程序democlassic.jsp中为什么没有报错? |
|
fins
2007-04-30
第一个问题可能是编码原因
你的页面是GBK 我的ecside.js是UTF-8 你转换一下编码吧 下一版本我会提供多种编码的文件,大家在使用不同编码的时候引入不同的文件就可以了 第2个原因我也不太确定 能不能告诉我一下你的应用服务器是什么 谢谢 |