`
liqita
  • 浏览: 289770 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSP传参数给Birt的两种方法 转

阅读更多

JSP传参数给Birt的两种方法

分类: Birt 1048人阅读 评论 (1) 收藏 举报

关于给报表传值:

如果你不使用birt viewer的话,那就是使用api调你的报表,birt api有设置参数的api.
如果使用birt viewer,直接通过url或者使用birt 标签都是可以的。

 

本文只是用jsp的url方式传递参数给birt报表,然后在birt的sql语句里面使用:

一、第一个中方法:

1、在jsp的URL里面添加所要传递的参数:

http://localhost:8080/birt-web/frameset?__report=test.rptdesign&sample=my+parameter

2、在报表当中添加同名报表参数sample,然后可以添加data set参数关联到报表参数sample,这样data set参数就可以得到从jsp页面传递过来的参数从而作为查询条件。

二、第二种方法:

1、在jsp的URL里面添加所要传递的参数:

http://localhost:8080/birt-web/frameset?__report=test.rptdesign&sample=my+parameter

2、在报表当中添加同名报表参数sample

3、点击 Date Sets,在点中间的"Script"标签,选择BeforeOpen,写上
var sample = params["sample"].value;
if(isample=="null"){
   this.queryText +="where 1=1" ;
}
else {
   this.queryText +=" where sample=" + sample ;
}
4、如此设置之后就不用再data set里面设置data set参数。
 
 
 
另一种实现方式:

1.jsp页面设置几个需要传递参数的文本框

jsp代码

[html] view plain copy
  1. < script   type = "text/javascript" >     
  2.     function search(){     
  3.         var st  =  document .getElementById("st").value;//开始日期     
  4.         var et  =  document .getElementById("et").value;//结束日期     
  5.         window.location.href  =  "run?__report=reports/new_report.rptdesign&__parameterpage=false&st=" +st+"& et ="+et;     
  6.                  
  7.     }     
  8.     function print(){     
  9.         var st  =  document .getElementById("st").value;//开始日期     
  10.         var et  =  document .getElementById("et").value;//结束日期     
  11.         window.location.href  =  "frameset?__report=reports/new_report.rptdesign&__parameterpage=false&st=" +st+"& et ="+et;     
  12.                  
  13.     }     
  14. </ script >     
  15.   </ head >     
  16.        
  17.   < body >     
  18.     < input   type = "text"   name = "st"   id = "st" > < br >     
  19.     < input   type = "text"   name = "et"   id = "et" > < br >          
  20.     < input   type = "button"   value = " 查 询 "   onclick = "search()" >     
  21.     < input   type = "button"   value = " 打 印 "   onclick = "print()" >     
  22.   </ body >     

 
注: 当点击 查询  按钮时 用js指定转到的url
 (window.location.href = "run?__report=reports/new_report.rptdesign&__parameterpage=false&st="+st+"&et="+et;)
    (1)run(只能显示, 没有打印, 分页等功能): 和普通的html页面显示的效果一样,样式需要在报表中设计, 改成frameset则有所有功能
    (2)参数:st(起始日期), et(结束日期)

2. rptdesign文件设置

(1).报表参数
 Name   Data type   Display     Display As--Format as       

  st           Data       Text Box     Custom:yyyy-MM-dd
  et           Data       Text Box     Custom:yyyy-MM-dd

(2).数据集参数
 Name    Data Type    Direction    Defalut Value    Linked To Report Paramter
   st         Date               Input           N/A                            st
   et         Date               Input           N/A                            et
(3).数据集sql(时间从 ? 到 ? 的时间段的记录)
 select * from tabelName where tbtime betweem ? and ?

 
 
 
 
 
 
 

原来用URL方式向Birt进行参数传递,发现二个问题

1.需要用urldecode进行二次处理,麻烦;

2.参数长度有限制,恶心。遇到长一点参数就没有办法了;

 

后来就考虑在script中通过session 参数进行传递

Java代码
[java] view plain copy
  1. importPackage(Packages.java.io,Packages.java.util,Packages.java.net);     
  2. importPackage(Packages.javax.servlet.http);     
  3. request=reportContext.getHttpServlet();     
  4. var session = request.getSession();      
  5. status = session.getAttribute("whereClause" );    

 结果发现request始终是null,原因是此request不同于javax下的request,其实经过Java处理也是可以实现,但我觉得太烦了。

研究了N久发现了通过

Adding an Object to the Application Context for the Viewer

中利用appcontext的方法传递数据。终于成功简单的处理了Birt web参数传递。而且传递的内容和长度和java一致。

Java代码
[java] view plain copy
  1. String contextKey =  "whereClause" ;     
  2.         request.getSession().setAttribute("AppContextKey" , contextKey);     
  3.         request.getSession().setAttribute("AppContextValue" , sql);    

在report中用

beforeOpen中取出即可

 
 
 
 
 

如何把java代码中参数传递给报表?在报表中又怎样获取这个参数?
答:通过这种方式给报表传参:
HashMap paramMap = new HashMap();
paramMap.put("birtparam1", 1);
paramMap.put("birtparam2", 5);
task.setParameterValues(paramMap);

设置报表参数与传递的参数同名,这样就关联起来了

数据集参数与报表参数绑定

sql语句中的“?”号对应数据集参数

分享到:
评论
1 楼 ddnzero 2014-10-27  
Adding an Object to the Application Context for the Viewer 这里博主能详细的说一下么?
比如:request.getSession().setAttribute("AppContextValue" , sql);
在report的beforeOpen中,是request.getSession().getAttribute("AppContextValue");这么取出来么?

相关推荐

    JSP几种页面间传递参数实现的方法

    JSP页面间传递参数是Web开发中的一项重要技术,以下是几种常见的JSP页面间传递参数实现的方法: 1. 直接在 URL 请求后添加参数 可以在 URL 请求后添加参数,如:&lt;a href="thexuan.jsp?action=transparams&detail=...

    JSP servlet的两种分页方式

    总结起来,JSP和Servlet实现分页的方法主要分为基于请求参数和基于会话两种。理解这两种方法的工作原理并根据项目需求选择合适的方式是提升Web应用性能和用户体验的关键。通过阅读和实践提供的"openpage"相关文件,...

    jsp连接mysql两种方法

    jsp连接mysql两种方法,当您面临JSP连接MySQL数据库问题,你首先需要在MySQL数据库里创建一username表,表里面创建两个字符型的字段,字段名分别为:uid,pwd,然后插入几条测试数据。

    jsp中页面间传汉字参数转码的方法.docx

    在JavaServer Pages (JSP) 开发中,页面间的参数传递是常见的操作,尤其是在处理包含汉字的参数时,由于编码问题可能会导致乱码。本文主要介绍如何在JSP中正确地进行汉字参数的转码与解码,确保数据在页面间传递时...

    cognos和jsp的参数传递

    在IT行业中,Cognos和JSP(JavaServer Pages)是两种不同的技术,但它们可以协同工作以实现数据的交互和展示。Cognos是一款由IBM提供的商业智能和分析平台,而JSP则是一种用于创建动态网页的Java技术。本文将深入...

    在JSP中如何传递参数

    这是本人做的一个演示JSP如何传递参数的实例,里面介绍了JSP传递各种参数的5种方法,还有一种就是通过地址栏来传递,在这里里面没有体现。

    转:Birt接收JSP传递的参数值

    总结,JSP与BIRT之间的参数传递是一种常见的需求,它允许我们根据用户输入动态生成定制化的报表。通过理解这两个技术的工作原理以及它们如何相互交互,开发者可以构建出灵活且强大的报表解决方案。记住,无论是在JSP...

    jsp参数传递

    本文将详细介绍几种常见的JSP页面间参数传递方法及其应用场景。 #### 二、直接在URL请求后添加参数 这种方法是最直接也是最简单的参数传递方式。当用户点击链接或表单提交时,可以在URL后面直接追加参数,形如 `...

    jsp页面中获取servlet请求中的参数的办法详解

    在Java Web应用程序中,Servlet和JSP是两个关键组件,它们协同工作来处理客户端的请求并展示响应。本文将深入探讨如何在JSP页面中获取Servlet请求中的参数,并将其传递到另一个JSP页面。 首先,我们需要配置`web....

    jsp表头相对固定的2种方法

    本篇文章将详细介绍两种在`JSP`中实现表头固定的常见方法,确保用户在滚动查看长表格时始终能看到表头。 方法一:CSS定位技术 1. **静态定位**:通过CSS的`position`属性,我们可以将表头设置为`position: fixed`...

    JSP页面从一个页面传递一个参数到另外一个页面的方法

    本文将详细介绍两种常见的JSP页面间参数传递方式:重定向跳转与转发跳转,并对比这两种方法的特点及适用场景。 #### 重定向跳转 **定义:** 重定向跳转是一种HTTP响应机制,服务器告诉浏览器去访问另一个URL。在...

    jsp页面调用applet实现人民币的大小写转换.docx

    Applet中使用getParameter()方法获取JSP页面传递的参数,例如背景颜色和前景颜色。这些参数可以在JSP页面中通过 `&lt;PARAM&gt;` 标签进行设置。 四、JSP页面与Applet的交互 JSP页面与Applet之间的交互使用JavaScript...

    JSP参数接收工具类.rar

    在这个"JSP参数接收工具类.rar"压缩包中,包含了两个重要的文件:"JSP参数接收工具类(ParamUtils.txt)"和"类加载工具.txt"。这些文件很可能是为了帮助开发者更方便地管理和处理JSP页面传入的请求参数,以及理解类...

    JSP转成HTML

    在Web开发领域,JavaServer Pages(JSP)是一种常见的服务器端脚本语言,用于生成动态网页内容。然而,为了提高网站的搜索引擎优化(SEO),有时我们需要将JSP文件转换为静态HTML文件。这是因为搜索引擎爬虫通常更...

    几种JSP页面传值方式.txt

    ### 几种JSP页面传值方式详解 在Java Web开发中,JSP(Java Server Pages)是一种常用的技术,用于创建动态网页。JSP页面之间的数据传递是实现前后端交互的关键环节之一。本文将详细介绍几种常见的JSP页面传值方式...

    jsp中URL传递中文参数的处理方法

    在页面的url中使用encodeURI(encodeURI(中文)),对中文... 您可能感兴趣的文章:js将json格式的对象拼接成复杂的url参数方法js的form表单提交url传参数(包含+等特殊字符)的两种解决方法JS根据key值获取URL中的参数值及

    动态Jsp页面转换成静态Html页面

    2. 捕获请求:在Servlet的doGet或doPost方法中,获取请求的URL和参数。 3. 解析JSP:使用JSP的`RequestDispatcher.include()`或`JspRuntimeLibrary.include()`方法,将JSP页面包含进来并执行,得到HTML字符串。 4. ...

    jsp中文显示问号问题解决方法.docx

    解决JSP 中文显示问号问题的方法有两种:一种是在 Eclipse 中设置 Encoding 选项,另一种是修改 JSP 文件的编码方式。 方法一:在 Eclipse 中设置 Encoding 选项 在 Eclipse 中,可以通过设置 Encoding 选项来解决 ...

    Tomcat的jsp编译参数

    【标题】"Tomcat的JSP编译参数" 在Java Web开发中,Tomcat服务器扮演着重要的角色,尤其是对于处理JSP(JavaServer Pages)页面。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现动态...

    JSP页面的五种跳转方法

    JSP页面的五种跳转方法是Web开发中常见的页面间导航技术,它们允许开发者在用户请求之间灵活地转移控制流。以下是这五种方法的详细介绍: 1. **RequestDispatcher.forward()** - `RequestDispatcher.forward()`...

Global site tag (gtag.js) - Google Analytics