参数表单

阅读(7830) 标签: 参数表单, 传参, param标签,

本章主要介绍参数表单的原理、用途、详细说明及校验。

实例请参考TAG实例 / html模式发布报表 / 参数

原理和用途:

在报表设计好后,往往需要向报表中传递参数,传统的方式需要用户来定义参数输入表单,例如:

  <form method=post action="<%=request.getContextPath()%>/myReport.jsp">

<table>

<tr style="FONT-SIZE: 13px; FONT-FAMILY: 宋体">

<td style="COLOR: cornflowerblue">&nbsp;性别</td>

<td>

<select name="sex" style="WIDTH: 70px">

<option value=1></option>

<option value=2></option>

</select>

</td>

<td style="COLOR: dodgerblue">&nbsp;班级</td>

<td>

<select name="class" style="WIDTH: 70px">

<option value=1>一班</option>

<option value=2>二班</option>

</select>

</td>

<td>&nbsp;<input type=submit value=查询 style="FONT-SIZE: 13px; WIDTH: 40px; COLOR: mediumblue; FONT-FAMILY: 宋体; HEIGHT: 22px; BACKGROUND-COLOR: wheat"></td>

</tr>

</table>

</form>

 

此时,要求满足:

Ø 参数个数必须与要显示的报表所设计的参数个数一致(如未输入则使用报表设计时填的缺省值),参数名称也大小写相同

Ø myReport.jsp(或自己的jsp/servlet)中用request.getPararmeter(“***”)来取得各参数,并把参数拼成润乾报表能支持的参数串

Ø 把拼成的参数串通过html标签中的params属性传递到报表中

 

这是相当麻烦的过程,如果要实现相同的功能,又可以把参数表单的设计在报表设计器中完成,那么可以使用tag生成参数表单。其原理是,在设计器中,新建“参数模板”报表,将其设计成参数模板,为每个输入格设置编辑风格和“变量名”属性,在web服务端通过<prefix:param>标签对本参数模板解析生成对应的参数表单。注意,“变量名”属性值大小写应该与实际报表中的参数大小写一致。其大致过程如图1.2.1所示:

 

1.2.1:用参数模板生成参数表单过程图

 

详细说明

前面介绍的报表tag标签中有一个params属性,可以用来为报表输入参数的值。

其格式为:

<report:html ……

params="param1=value1;param2=value2;……"

……

/>

参数的个数应该与报表中的参数个数相同,参数名大小写一致。

如果参数值值是变化的,那么应该先在JSP代码中将参数串拼好,再传入tag中,如下所示:

<%

String params = "param1=" + value1 + ";param2=" + value2 + ";" ……"%>

<report:html ……

params="<%=params%>"

……

/>

以上是传统的做法。使用参数表单模板的做法是:用设计器设置一个参数模板,以此生成一个能输入报表参数,并能对报表进行报表查询的html form表单。在JSP文件中用<prefix:param> 标签来发布,prefix是用户在JSP文件头中指定tag定义文件时指定的前缀名。该定义语句如下所示:

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

此定义语句必须写在JSP的开头,其中prefix的值可以自己指定,但tag标签中的前缀必须与其保持一致。

然后在要发布报表的地方用上面介绍的tag标签来发布,如:

<report:param name=……paramFileName=…./>

此标签的属性说明见下表:

(属性名都是大小写相关,属性值必须放在双引号中)

属性名

是否必填

属性含义

属性取值

缺省值

name

参数表单form在网页中的ID标识

符合变量命名规则的字符串,在本网页中应是唯一的

srcType

参数表单源的类型

html报表

file

paramFileName

生成参数表单的RPX文件名

报表文件名,如为"""null",则不生成表单

beanName

当参数表单源类型为defineBeanreportBean时,已保存到request中的bean的名称或报表缓存池中的缓存ID

符合变量命名规则的字符串,与保存参数表单源bean时的名称一致

contextName

html单表参数模板式报表

变量名

resultPage

提交参数后,显示报表结果的页面

相对于应用根目录的页面URL

当前页面

target

显示结果的窗体名

html formtarget属性取值相同

当前窗体,_self

hiddenParams

一些隐含的参数,如登录用户名、用户身份等

3.1中的params取值相同

needSubmit

是否需要自动生成提交参数的按钮

Yesno

yes

submitLabel

提交钮的外观定义

html元素或文字

查询

params

生成此参数表单时需用到的报表参数,一般用于下拉数据窗口中的数据过滤条件

html报表中的params相同

exceptionPage

显示参数表单异常信息的JSP页面

页面相对于应用根目录的路径名

processor

参数提交时,预先进行一些处理的java类名

com.raqsoft.report.usermodel.input.AbstractParamProcessor继承的java类名

needInputCssStyle

是否需要使用报表中设计的单元格样式,如字体、颜色等

yesno

yes

needImportEasyui

是否需要引入easyuijscss文件,如需修改easyui的主题风格可参考修改easyui插件的主题小节

yesno

yes

theme

编辑控件的外观主题风格

default,black,bootstrap,gray,metro

default

callback

参数表单提交后的回调js函数名,当用户提供此函数后,表单采用ajax的方式提交,不刷新页面,系统将resultPage的内容作为参数去调用callback函数

函数名

mobileMode

指定参数表单是否使用手机模式发布,见注1

yesno

(不指定此参数时程序自动检测浏览器的user-agent来判断是否是手机浏览器)

hasParamFold

是否显示参数表单的折叠栏

yes no

no

resultContainer

查询结果显示在页面中的哪个容器里(html对象,比如div) ,见注2

取值是容器的id

usePagedBox

控制参数表单中下拉选项的分页,支持的编辑风格有下拉列表框、下拉数据集

正整数,指每页显示N条选项

如果是0,表示不分页

0

scale

参数表单缩放显示比例

实数

1.0

 

1

手机端使用参数模板时,mobileMode属性值需设置为yes。参数表单和报表分为两个页面,独立显示,通过<report:param>标签访问参数表单页面,在标签中添加resultPage属性指定报表查询结果页面。

手机端参数模板限制条件为:表单只有前两列有效,列宽设计无效。第一列是参数提示,第二列是输入区,第二列会与屏幕宽度自适应。所以从第三列开始往后都是无效的。

2

在使用resultContainer属性时,要同时指定resultPage属性,一般resultPage里应该只有显示报表的tag,就像queryXXX.jsp一样,可以参考showXXX.jsp里的用法。

参数表单校验

系统JS函数

getParamValue (paramName)

参数说明:

paramName  参数表单中的参数名

功能说明:

获取参数表单中某个参数值

返回值:

字符串

举例:

表单有两个参数beginend,分别代表开始日期和结束日期,要求开始日期不能大于结束日期,实现方式如下:

 

 

【报表】-【报表属性】:

在参数表单的报表属性中填写一段用于校验的js,当提交参数时会调用这段脚本。如果输入的参数全都满足要求,则返回true;某个参数不满足要求时,弹出信息,并返回false