首页 > 其他分享 >关于在ECside列表页面点击标题查看明细后不能回到原来所在页的问题

关于在ECside列表页面点击标题查看明细后不能回到原来所在页的问题

时间:2023-04-28 18:03:30浏览次数:39  
标签:EC ECside req ec 明细 crd 排序 页面


[u][b]问题:[/b][/u]在使用ECside分页框架的过程中,我们在EC列表页面点击某一行记录,进入该行记录的详细信息页面,此时我们在返回时却又只能返回到第一页,不能返回原来所在的第二页。其中还有原来我们设置好的每页显示多少行,也变回原来的默认值了,排序方式也变成默认的了。
[u][b]解决方案:[/b][/u]在明细页面点击返回时,需要带上几个参数,并且这些参数要用hidden来存储,ECside框架会用request.getParameter()方法来取值。
主要参数如下:

<input type="hidden" name="ec_i" value="StrategyListTable"/>ec_i存储的是EC列表的tableId,该tableId为StrategyListTable 

 <input type="hidden" name="StrategyListTable_crd" value="20"/>StrategyListTable_crd存储的是每页显示多少行,该参数名是由tableId+"_crd"组成 

 <input type="hidden" name="StrategyListTable_p" value="1"/>StrategyListTable_p存储的是当前是第几页,该参数名是由tableId+"_p"组成 

 <input type="hidden" name="StrategyListTable_s_strategyName" value="asc"/>StrategyListTable_s_strategyName

存储的是用户选择的排序字段和方式,该参数名是由tableId+"_s_"+排序字段 组成,它的value值为asc和desc可选,表示排序方式。
[u][b]参考实现:[/b][/u]在我的参与的项目开发过程中,我们的系统采用Struts+Spring+Hibernate,所有的action都继承自BaseAction,我们直接在这个基类中取出这些参数,再将其传入明细页面,在明细页面只用拷贝几行固定的代码,在返回提交表单的时候,顺便提交一下这些参数就OK了。
BaseAction中的代码:

String ec_i=""; 

 ec_i=req.getParameter("ec_i"); 


 if(ec_i!=null&&!ec_i.equals("")){//存在EC显示属性 

 String cp=req.getParameter(ec_i+"_p");//取出当前第几页 

 String crd=req.getParameter(ec_i+"_crd");//取出每页多少行 

 String sort=req.getParameter("sort");//取出排序方式 

 String sortProp=req.getParameter("sortProp");//取出排序字段 

 //判断前台是否有排序信息,如果前台没有排序,则这两个属性都是null 

 if(sort!=null&&!sort.equals("")&&sortProp!=null&&!sortProp.equals("")){ 

 log.info("原页面取到的排序属性为:"+sortProp+"方式为:"+sort); 

 req.setAttribute("ECSort", sort); 

 req.setAttribute("ECSortProp",sortProp); 

 } 

 log.info("原页面提交的列表名称为:"+ec_i+" 当前是第 "+cp+" 页,每页显示 "+crd+" 行"); 

 req.setAttribute("ECI", ec_i); 

 req.setAttribute("ECTable_p", cp); 

 req.setAttribute("ECTable_crd", crd); 

 } 

明细页面的固定代码: 

 <input type="hidden" name="ec_i" value="<c:out value='${ECI}'/>"/> 

 <input type="hidden" name="${ECI}_crd" value="<c:out value='${ECTable_crd}'/>"/> 

 <input type="hidden" name="${ECI}_p" value="<c:out value='${ECTable_p}'/>"/> 

 <input type="hidden" name="<c:out value='${ECSortProp}'/>" value="<c:out value='${ECSort}'/>"/> 

 <input type="hidden" name="sort" value="<c:out value='${ECSort}'/>"/> 

 <input type="hidden" name="sortProp" value="<c:out value='${ECSortProp}'/>"/>



[u][b]备注:[/b][/u]在项目开发过程中,会有这种情况:从第一个EC列表中点击某行记录进入明细页面,而在这个明细页面中,还有EC列表,在这种情况下,以上这些参数就会重复出现,但ECside框架只会取出其中一个,这时候要注意,在明细页面返回上一个EC列表的时候,要提交上一个EC列表的参数。

标签:EC,ECside,req,ec,明细,crd,排序,页面
From: https://blog.51cto.com/u_9716826/6235250

相关文章