参数表单

阅读(665) 标签: 参数表单, 传参, 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的主题风格可参考《润乾报表V2018应用开发教程》3.2.4小节

yesno

yes

theme

编辑控件的外观主题风格

default,black,bootstrap,gray,metro

default

callback

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

函数名

mobileMode

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

yesno

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

hasParamFold

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

yes no

no

 

 

注意:

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

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

 

参数表单校验

系统JS函数

getParamValue (paramName)

  参数说明:

paramName  参数表单中的参数名

  功能说明:

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

  返回值:

    字符串

 

举例:

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

 

 

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

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