原来用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中取出即可