多语言展示
当前在线:1346今日阅读:39今日分享:10

表格软件中如何给session赋值实现参数共享

若有几张不同的报表,每张报表都有一个共同的项可以选择,比如日期时间。我们希望选择了第一张报表的时间之后,其他报表的默认时间都变为第一张报表选择的时间,此时要如何实现呢?下面就通过表格软件FineReport来简单介绍一下。
工具/原料
1

表格软件FineReport7.1.1

2

大小:148.2M 适用平台:windows/linux

方法/步骤
1

Ajax传值设置随便打开一张带参数的模版,如打开模版:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Parameter\Parameter.cpt。点击参数界面,给文本框控件增加编辑后事件,具体的js如下:var str=this.getValue();    //获取当前控件的值FR.ajax({     url: 'servlet/session?id='+FR.cjkEncode(str),   将值传递给session这个servlet中});注:如果想要预览报表的同时将数据也写入到session中,而不需要异步加载,可以再ajax下面加上async:false。

2

获取值并保存至Session新建一个名为session的类,具体的代码如下:import javax.servlet.http.HttpSession;      import java.io.IOException;      import java.io.PrintWriter;      import java.util.ResourceBundle;      import java.lang.String;      import javax.servlet.ServletException;      import javax.servlet.http.HttpServlet;      import javax.servlet.http.HttpServletRequest;      import javax.servlet.http.HttpServletResponse;        import com.fr.stable.CodeUtils;  import com.fr.web.utils.WebUtils;        public class session extends HttpServlet {          public void doGet(HttpServletRequest request,                            HttpServletResponse response)              throws IOException, ServletException          {           response.setContentType('text/html; charset=gb2312');                 PrintWriter out = response.getWriter();           out.println('');           out.println('');           String urlid=request.getParameter('id');  //获取url通过ajax传递的值           HttpSession session=request.getSession(true);           if(urlid==''||urlid==null){           out.print('');           out.println('set session:');           out.println('');           out.println('');              if(request.getParameter('sessionvalue')!=null&&request.getParameter('sessionvalue')!=''){           session.setAttribute('sessionname', request.getParameter('sessionvalue'));           }           }           else{               urlid = CodeUtils.decodeText(urlid);           session.setAttribute('sessionname',urlid);  //将值赋值给sessionname这个session中              out.println('window.close();');           }           out.println('');           out.println('');          }            public void doPost(HttpServletRequest request,                            HttpServletResponse response)              throws IOException, ServletException          {              doGet(request, response);          }              }  编译session.java类,将编译好的session.class放置在%FR _HOME%\WebReport\WEB-INF\classes目录下。

3

配置访问session赋值的Servlet打开%FR _HOME%\WebReport\WEB-INF\下的web.xml,加入如下代码:    session    session           session    /servlet/session  注:在编写java类文件的时候,如果是保存在某个具体的包下面,比如说com/fr/data下面,那么除了需要将class文件放置在对应位置下之外,web.xml文件中的servlet-class标签也需要修改,比如说修改为com.fr.data.session。

4

获取session值在另外一个参数模版如%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Parameter\Parameter1.cpt的参数控件的控件值中选择公式并输入$sessionname(servlet中session的名字),如下图:注:sessionname是指java类中的sessionname。

5

效果查看分页预览parameter.cpt,在文本框中输入中国后,再预览parameter1.cpt,可以看到文本框中显示的是中国了,如下图:

推荐信息