利用参数监听类保存查询参数
通过参数模板进行相关的查询过滤是生产中比较常见的一种模式,不过随着对客户体验度的重视程度日益增加,对报表中的体验度需求也日趋增长。
需求如下:
在参数模版中输入了相关的查询条件,然后可以将此查询条件保存,下次再打开同一张报表或者带有此参数的其他报表时,上次设定的查询条件自动显示出来,不需要再次输入。
实现思路:
大致实现思路为通过参数监听类,获取相关的参数值传递到session中,然后在需要自动显示出来的报表中调用会话变量的参数来实现。下面讲解一个简单的例子。
首先创建一张带参数模板的报表,在在参数报表中加入一个参数:参数名为sid,参数类型改成会话变量。然后再C2单元格把该参数放上。
在参数监听类中,判断传入主报表中的参数名如果为arg1,那么把这个参数值保留到session里且名称为sid,这样只要session不失效那么在同样报表或者在其他报表的参数模版中加入会话变量的sid这个参数就可以保留住该参数。
public class MyParamProcessor extends AbstractParamProcessor {
public void process() throws Exception {
String test = getParamValue(“arg1″);
session.setAttribute(“sid”, test);//此住如果不想保留在session中或者session失效后也起作用,也可写入相关文件中,比如写到properties中,那么在展现报表的showReport.jsp中就先要读下先关文件把值取到然后传递到报表中.参数监听类的具体用法也可参照应用开发教程api中的自定义类
}
}
参数监听类配制方法在<report: param>中(注意不是报表的标签,是参数模板的标签)加入一个属性processor=”com.runqian.MyParamProcessor” (引号的内容为参数监听类的类名)即可。
这样在页面中展现报表查询参数后,在session不失效的情况下,就可将之前查询过的参数保留住,无需重新输入。