[BIRT]web中向Birt报表传参数

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

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

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

 

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

importPackage(Packages.java.io,Packages.java.util,Packages.java.net);
importPackage(Packages.javax.servlet.http);
request=reportContext.getHttpServlet();
var session = request.getSession(); 
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一致。

 

String contextKey = "whereClause";
		request.getSession().setAttribute("AppContextKey", contextKey);
		request.getSession().setAttribute("AppContextValue", sql);

 在report中用

beforeOpen中取出即可

你可能感兴趣的:(birt)