润乾报表参数大于浏览器限制解决办法

润乾报表参数大于浏览器限制解决办法

一些客户由于自身业务问题,给报表传递参数的时候参数过长,超过了 IE 浏览器里面参数不能超过 2048 字节的限制,这样如果采用普通的 url 传递参数或者采用 get() 方法传递参数,就会因为参数在浏览器地址栏显示不全而出现错误,参数也就没有办法传递,对于这种问题,可以常用 form 表单的 post() 方式传递,这种传递方式传递参数时,参数不在浏览器地址栏里面显示,这样参数就可以正常传递给报表页面了,下面就用一个小例子介绍一下参数长度过长时的解决办法。

有些情况下客户的参数值过长,长度超过了浏览器的限制 (IE 浏览器地址栏对参数长度的限制是 2048 字节 ) 。比如参数的样式如下图所示:

那么就要采用 post 方式传递参数。

第一步:先做一个用 post 方式传递参数的简单页面,页面的代码如下:

<%@ page contentType=”text/html;charset=GBK” %>

<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>

<html>

<body topmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>

<form method=”post” action=”t.jsp” id=”form1″>

<input name=”arg1″ type=”text” size= “20″ style= “height:20px” value=”" />

<input id=”test” type=”submit” value=” 提交 “/>

</form>

</body>

</html>

上面代码中 form1 传递参数就是采用 post 的方法, form1 name arg1 文本框作用是填入参数的,保存上面代码为 a.jsp

第二步:再写一张展现报表并且接受参数的 jsp jsp 的代码如下:

<%@ page contentType=”text/html;charset=GBK” %>

<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>

<%@ page import=”java.io.*”%>

<%@ page import=”java.util.*”%>

<%@ page import=”com.runqian.report4.usermodel.Context”%>

<html>

<body topmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>

<%

request.setCharacterEncoding( “GBK” );

String arg1 = request.getParameter( “arg1″ );

String param = “arg1=”+arg1;

%>

<table align=”center”>

<tr>

<td align=”right”>

<report:html name=”report1″

reportFileName=”test.raq”

needSaveAsExcel=”no”

needSaveAsPdf=”no”

needSaveAsText=”no”

needSaveAsWord=”no”

params=”<%=param%>” />

</td>

</tr>

</table>

</body>

</html>

这张 jsp 中接受上一张 jsp post 方式传递过来的参数 arg1 ,将参数传递给报表,保存上面代码为 t.jsp

第三步:制作一张名为 test.raq 的报表,报表中有一个参数 arg1 ,报表的样式如下图所示:

保存报表为 test.raq

第四步:查看效果。

访问 a.jsp ,页面上输入第一幅图中的参数值,点击查询按钮,如下图所示:

点击提交按钮,看到页面的效果如下图所示:

参数被传递过来了,这样当参数过长时传递参数的问题就可以解决了。

热门文章