最近在做的一个项目,前台依然是使用displaytag,由于项目需要,需要对记录进行排序和导出报表,因为数据不允许分页,提交过来的参数信息又较多,所以在Displaytag中,默认取request中的数据再次导出报表和排序,就导致URL 过长,导致导出和排序失败.
WWW FAQs: What is the maximum length of a URL?
<!---->
<date>2006-10-13</date>: Although the
specification of the
HTTP protocol does not specify any maximum length, practical limits are imposed by web browser and server software.
Microsoft Internet Explorer (Browser)
Microsoft states that the maximum length of a URL in Internet Explorer is
2,083 characters, with no more than 2,048 characters in the path portion of the
URL. In my tests, attempts to use URLs longer than this produced a clear error message in Internet Explorer.
Firefox (Browser)
After
65,536 characters, the location bar no longer displays the URL in Windows Firefox 1.5.x. However, longer URLs will work. I stopped testing after 100,000 characters.
Safari (Browser)
At least
80,000 characters will work. I stopped testing after 80,000 characters.
Opera (Browser)
At least
190,000 characters will work. I stopped testing after 190,000 characters. Opera 9 for Windows continued to display a fully editable, copyable and pasteable URL in the location bar even at 190,000 characters.
在其他的浏览器都正常.因为DisplayTag在处理导出报表和排序默认是Get处理请求的,没办法,到google搜了一下,发现有人解决了这个问题.见(http://jira.codehaus.org/browse/DISPL-377)
试着修改这个类,,因为处理为Form Post提交数据,一切正常.但是想想source code被修改了,会给以后带来一定的风险.想个1天也没什么办法.感觉只能post才能处理大量的数据.
postForm.append("<form name=\"form" + uid
+ "\" method=\"post\" action=\""
+ sortHref.getBaseUrl() + "\">");
for (int idx = 0; idx < mapKey.length; idx++) {
String value = "";
// Modified by Indicia 07-mar-2007 - Begin
if (sortHref.getParameterMap().get(mapKey[idx]) instanceof Object[]) {
Object[] values = (Object[])sortHref.getParameterMap().get(mapKey[idx]);
for(int j=0; j < values.length; j++) {
value = ((Object)values[j]).toString();
try {
postForm.append("<input type=\"hidden\" name=\""
+ mapKey[idx] + "\" value=\"" + URLDecoder.decode(value, "ISO-8859-1") + "\">");
} catch (UnsupportedEncodingException ignore) {}
}
} else {
value = sortHref.getParameterMap().get(
mapKey[idx]).toString();
try {
postForm.append("<input type=\"hidden\" name=\""
+ mapKey[idx] + "\" value=\"" + URLDecoder.decode(value, "ISO-8859-1") + "\" title=\""+value+"\"/>");
} catch (UnsupportedEncodingException ignore) {}
}
// Modified by Indicia 07-mar-2007 - End
}
postForm.append("</form>");
Href postExportHerf = (Href) sortHref.clone();
postExportHerf.setFullUrl("javascript:document.forms['form" + uid
+ "'].submit();");
本来想这个样子,反正解决了问题,但是想想,好象默认的Session中的数据不会出现在displaytagUrl后面,就试着改了下代码,发现果然可行.把较长的数据放在session中,然后在displaytag前台中使用excludedParams="datasubmit去除那些需要长的需要再次提交给后台的数据.结果发现果然导出报表和排序正常了.
//first get it from request
//if is null get from the session
String dataSubmit=request.getParameter("datasubmit");
if(dataSubmit==null)
{
dataSubmit=(String)request.getSession().getAttribute("datasubmit");
}
request.getSession().setAttribute("datasubmit", dataSubmit);
<display:table name="states" sort="list" defaultsort="1" id="element" requestURI="state.html" excludedParams="datasubmit">
<display:column property="id" title="ID" sortable="true" sortName="id" />
<display:column property="country_id" sortable="true" sortName="country_id" title="First Name" />
</display:table>
分享到:
相关推荐
Displaytag是一个开源的Java库,专门用于创建复杂的表格和数据展示。在1.1版本中,它主要解决了在处理大数据分页时的问题,这使得它成为处理大量数据的理想选择,尤其是在Web应用程序中。这个源码包包含了一系列的...
### DisplayTag 使用指南详解 #### 一、简介 DisplayTag 是一个开源的 Java Web 标签库,主要用于处理数据表格的展示与交互。它能够帮助开发者轻松地将 JavaBean 集合转换成 HTML 表格,并且支持排序、分页等功能...
DisplayTag是一个开源的Java库,专门用于在Web应用程序中创建复杂的表格。它提供了一系列的标签和功能,使得在JSP页面上展示数据变得更加容易和灵活。DisplayTag支持分页、排序、导出、国际化和自定义样式,是开发...
Displaytag 是一个开源的 JSP 标签库,专门用于创建数据表格,提供了一组易于使用的标签,可以实现复杂的表格功能,如分页、排序、导出等。在本文中,我们将详细讨论 Displaytag 1.1 版本的使用方法。 **一、...
DisplayTag 是一个强大的开源 JSP 标签库,专门用于处理网页中的表格展示。它提供了丰富的功能,如分页、数据导出、列排序和分组等,极大地简化了网页表格的开发工作。要使用 DisplayTag,首先需要从其官方网站...
最基本的使用方式是在JSP页面中设置`<display:table>`标签,将一个集合对象(如List)赋值给`name`属性,DisplayTag会自动遍历集合中的每个对象,显示其所有公共getter方法对应的属性。例如: ```jsp ( "test", ...
DisplayTag是Java Web开发中的一款强大且功能丰富的表格标签库,它为开发人员提供了一种高效、易用的方式来展示表格数据。DisplayTag 1.2是这个库的一个版本,包含了源码和对应的jar包,方便开发者进行查看和使用。 ...
DisplayTag 是一个强大的开源标签库,专为 Java Web 开发设计,主要用于在 MVC 模式下展示表格数据。它的特点是功能丰富,易于使用,并且高度可定制化,能够帮助开发者快速构建美观的数据展示页面。DisplayTag 支持...
6. **测试与运行**:下载并解压提供的zip文件后,将其部署到合适的服务器环境(如Tomcat),然后访问相应的URL,查看并测试这些功能是否正常工作。 总的来说,DisplayTag项目是学习和理解如何使用DisplayTag库创建...
displaytag-1.2.jar 显示标签
DisplayTag是一个开源的Java库,专门用于创建复杂的表格展示,尤其在Web应用中十分常见。这个压缩包包含了解决DisplayTag在处理中文显示时遇到的问题,以及一个专门用于编辑.properties文件的插件,使得配置更加方便...
DisplayTag是一个功能强大的Java开源分页和表格展示组件,它为Web开发提供了高效、灵活的解决方案。这个组件在Java社区中被广泛应用,因为其能够帮助开发者轻松实现数据的分页和排序,极大地提高了开发效率。 标题...
### DisplayTag标签库详解与应用 #### 显示与管理数据的新维度:DisplayTag标签库 在Web开发领域,特别是Java Web开发中,处理和展示大量数据列表是一项常见但又复杂的工作。DisplayTag作为一款功能强大的标签库,...
这篇博客“用JavaScript操作displayTag表头操作”显然关注的是如何利用JavaScript来操纵一个名为`displayTag`的表格库的表头功能。DisplayTag是一个功能丰富的开源Java Web组件库,它提供了一种强大的方式来展示表格...
DisplayTag 是一款强大的开源表格展示标签库,专为MVC架构设计,适用于Java Web应用程序。它提供了丰富的功能,包括排序、分页、国际化等,极大地简化了网页表格的开发。下面我们将详细探讨DisplayTag的使用方法。 ...
Displaytag 是一个开源的 Java 框架,用于在 Web 应用中生成表格和实现分页、排序等功能。它简化了在 JSP 页面中处理数据表的复杂性,提供了丰富的定制选项。以下是对 Displaytag 实现分页的详细解释: 1. **下载与...
DisplayTag是一个开源的Java库,用于在Web应用中创建复杂的表格。它提供了许多高级功能,如分页、排序、导出等。然而,在处理中文排序时,DisplayTag可能会遇到问题,因为默认的排序算法可能不支持汉字的正确排序。...