DisplayTag传递参数过长截断的问题

  Display标签(DisplayTag)是个很不错的标签,但在使用中发现,它默认使用地址栏来传递参数,而且会对参数进行编码处理,当参数过多过长的时候很容易出现参数被截断而丢失的问题。
  今天仔细研究了一下这个标签的文档及源码,发现在display:table中有个参数:form,设定这个参数,可以使用display标签通过post方式来传递参数,但是使用这个参数,要开发人员自行在页面上建立相应的表单。
  另外:还可以使用exludeParams,排除掉一些不用的参数。
  技术就是一层窗户纸,我一说相信很多人就知道了。
  还是贴两句代码,算个例子吧。

  /***********本人原创,欢迎转载,转载请保留本人信息*************/
  作者:wallimn 电邮:[email protected] 时间:2009-10-16
  博客:http://wallimn.iteye.com
  网络硬盘:http://wallimn.ys168.com
  /***********文章发表请与本人联系,作者保留所有权利*************/

<form name="tableform" action="commAction.do?method= search" method="post" >
<display:table name="${list}" requestURI="commAction.do?method=search" 
excludedParams="method"
export="true" form="tableform"
id="row" class="gyz dtt">
    <display:column property="scqymc" title="生产厂家"/>
    <display:column property="ph" title="批号"/>
</display:table>
</center>
</form>


  以上基本上就差不多了,DisplayTag会自动为你生成一个表单,其中包括一系列hidden元素,用来传相关的参数。

  但是,经过测试,我发现一个问题,就是自动生成的hidden元素中,只包含request.getParamters()返回值能够遍历到的内容。需要分页或排序的页面,当最初显示的时候,DisplayTag不会自动添加以sort、dir、及page为名字的hidden元素,会使用得相关操作失效。这不知算不算是DisplayTag的BUG,至少是个考虑不足的地方。看了看它的源码,没有为相关的问题提供解决方案。
  我的解决方法就是,最初打开页面的时候,通过地址栏传一下上面需要的几个参数。以后再进行操作的时候,这几个参数就一直存在、可用了。虽然有点麻烦,但是可用。谁有好的解决方案请告诉我。

你可能感兴趣的:(html)