表格软件FineReport7.1.1
大小:148.2M 适用平台:windows/linux
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。
获取值并保存至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(''); 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(''); } 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目录下。配置访问session赋值的Servlet打开%FR _HOME%\WebReport\WEB-INF\下的web.xml,加入如下代码:
获取session值在另外一个参数模版如%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Parameter\Parameter1.cpt的参数控件的控件值中选择公式并输入$sessionname(servlet中session的名字),如下图:注:sessionname是指java类中的sessionname。
效果查看分页预览parameter.cpt,在文本框中输入中国后,再预览parameter1.cpt,可以看到文本框中显示的是中国了,如下图: