在报表设计好后,往往需要向报表中传递参数或宏,传统的方式需要用户来定义参数输入表单,例如:
#001 <form method=post action=”<%=request.getContextPath()%>/setReportParams”>
#002 <table><tr style=”FONT-SIZE: 13px; FONT-FAMILY: 宋体”>
#003 <td style=”COLOR: cornflowerblue”> 性别</td><td>
#004 <select name=”sex” style=”WIDTH: 70px”>
#005 <option value=1>男</option>
#006 <option value=2>女</option>
#007 </select>
#008 </td>
#009 <td style=”COLOR: dodgerblue”> 班级</td><td>
#010 <select name=”class” style=”WIDTH: 70px”>
#011 <option value=1>一班</option>
#012 <option value=2>二班</option>
#013 </select>
#014 </td>
#015 <td> <input type=submit value=查询 style=”FONT-SIZE: 13px; WIDTH: 40px; COLOR: mediumblue; FONT-FAMILY: 宋体; HEIGHT: 22px; BACKGROUND-COLOR: wheat”></td>
#016 </tr></table>
#017 <input type=hidden name=resultPage value=”/selfArg.jsp”>
#018 </form>
此时,要求满足:
form的action必须与此示例相同,即action=”<%=request.getContextPath()%>/setReportParams”不可修改
参数个数必须与要显示的报表所设计的参数及宏个数一致(如未输入则使用报表设计时填的缺省值),参数名称也大小写相同
Form中必须有一个隐藏的参数名叫resultPage,其值为相对于应用根目录的报表显示页面路径。
这是相当麻烦的过程,如果要实现相同的功能,又可以把参数表单的设计在报表设计器中完成,那么可以使用Tag生成参数表单。其原理是,在设计器中,新建”填报 或 参数表单”报表,将其设计成参数模板,为每个输入格设置编辑风格和”参数名/JSP引用变量”属性,在WEB服务端通过<prefix:param>标签对本参数模板解析生成对应的参数表单。注意,”参数名/JSP引用变量”属性大小写应该与实际报表中的参数或宏大小写一致。其大致过程如图1.2.1所示:
用参数模板生成参数表单过程图
前面介绍的报表Tag标签中有一个params属性,可以用来为报表输入参数或宏的值。
其格式为:
<report:html ……
params=”param1=value1;param2=value2;……;macro1=value1;……”
……
/>
参数及宏的个数应该与报表中的参数及宏个数相同,参数名及宏名大小写一致。
如果参数值或宏值是变化的,那么应该先在JSP代码中将参数串拼好,再传入Tag中,如下所示:
<%
String params = “param1=” + value1 + “;param2=” + value2 + “;” ……”;macro1=” + value1 + ……
%>
<report:html ……
params=”<%=params%>”
……
/>
生成一个输入报表参数进行报表查询的html form表单。在JSP文件中用<prefix:param> 标签来发布,prefix是用户在JSP文件头中指定tag定义文件时指定的前缀名。该定义语句如下所示:
<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>
此定义语句必须JSP的开头,其中prefix的值可以自己指定,但tag标签中的前缀必须与其保持一致。
然后在要发布报表的地方用上面介绍的tag标签来发布,如:
<report:param name=……paramFileName=…./>
此标签的属性说明见下表:
(属性名都是大小写相关,属性值必须放在双引号中)
|
属性名 |
是否必填 |
属性含义 |
属性取值 |
缺省值 |
|
name |
是 |
参数表单form在网页中的ID标识 |
符合变量命名规则的字符串,在本网页中应是唯一的 |
无 |
|
paramFileName |
是 |
生成参数表单的RAQ文件名 |
报表文件名,如为”"或”null”,则不生成表单 |
无 |
|
resultPage |
否 |
提交参数后,显示报表结果的页面 |
相对于应用根目录的页面URL |
当前页面 |
|
target |
否 |
显示结果的窗体名 |
与html form的target属性取值相同 |
当前窗体,_self |
|
hiddenParams |
否 |
一些隐含的参数,如登录用户名、用户身份等 |
无 |
|
|
processor |
否 |
参数提交时,预先进行一些处理的java类名 |
java类名 |
无 |
|
needSubmit |
否 |
是否需要自动生成提交参数的按钮 |
Yes或no |
yes |
|
submitLabel |
否 |
提交钮的外观定义 |
Html元素或文字 |
查询 |
|
params |
否 |
生成此参数表单时需用到的报表参数,一般用于下拉数据窗口中的数据过滤条件 |
与html报表中的params相同 |
无 |
|
exceptionPage |
否 |
用户自定义异常信息处理页面 |
指向一个相对于WEB应用根目录的用户自定义错误信息JSP页面,如”/myError.jsp”、”/jsp/myError.jsp”等 |
无 |
