帆软报表和jeecg的进一步整合--ajax给后台传递map类型的参数
下面是页面代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<%
String deptIds = (String)request.getAttribute("departIds"); String dic="t_s_depart";
if(!"".equals(deptIds)){
dic="t_s_depart where ID in ("+deptIds+")";
} %>
<t:base type="jquery,easyui,tools,DatePicker"></t:base>
<html>
<head>
<title>FineReport Demo</title>
<script src = "webpage/xiaohaojiao/date.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#dept").change(function(){
$("#department").val($(this).val());
}); //给时间控件加上样式
$("#dates").click(function(){WdatePicker({dateFmt:'yyyy-MM-dd'});});
$("#datez").click(function(){WdatePicker({dateFmt:'yyyy-MM-dd'});});
getFineReport();
}); function getFineReport() {
var value="";
var key=""; var map = {};
var str ="";
map["url"]=window.frames[0].location.toString();
$('.searchParams').each(function () {
value = $(this).val().toString();
key=$(this).attr("id");
map[key] = value;
//主要:map转json字符串放入data
str = JSON.stringify(map);
});
$.ajax({
type:"POST",
url:"fineReportController.do?getFineUrl",
data:{
strMap:str
},
success:function(data){
var d = $.parseJSON($.parseJSON(data).msg)[0];
//姓名name是真实姓名_工号拼出来的,例如:张赛梅_160707302X
window.frames[0].location=encodeURI(encodeURI(d.fineUrl));
}
});
}
</script>
</head>
<body>
<div style="height:50px;">
开始时间:<input id="dates" class="searchParams Wdate" type="text" value="${dates}" />
结束时间:<input id="datez" class="searchParams Wdate" type="text" value="${datez}"/>
部门:
<t:dictSelect id="dept" field="dept" type="list" dictTable="<%=dic%>" dictField="departname" dictText="departname" defaultVal="" hasLabel="false" title="部门" ></t:dictSelect>
<input id="department" class="searchParams" value="" type="hidden" />
姓名:<input id="name" class="searchParams" value="" type="text" /> <a class="l-btn" onclick="getFineReport()" href="#">
<span class="l-btn-left">
<span class="l-btn-text icon-search l-btn-icon-left">查询</span>
</span>
</a>
</div> <iframe id="reportFrame" width="100%" height="100%" src="${fineReport}" ></iframe>
</body>
</html>
下面是后台代码:
package com.jeecg.xiaohaojiao.controller; import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Validator; import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.web.system.service.SystemService;
import org.jeecgframework.web.system.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView; import com.jeecg.xiaohaojiao.service.XhjUserDepartServiceI;
import com.jeecg.xiaohaojiao.util.RoleUtil; import freemarker.template.SimpleDate;
import net.sf.json.JSONObject; /**
* @Title: Controller
* @Description: 帆软报表页面跳转action
* @author liuf
* @date 2017-10-02 10:49:19
* @version V1.0
*
*/
@Controller
@RequestMapping("/fineReportController")
public class FineReportController extends BaseController{
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(FineReportController.class); //不同角色对应的部门ids
private String departIds = "";
@Autowired
private SystemService systemService;
@Autowired
private UserService userService;
@Autowired
private XhjUserDepartServiceI xhjUserDepartService; /**
* 无查询条件帆软报表页面跳转方法
* @param req
* @return
*/
@RequestMapping(params = "goFineReport")
public ModelAndView goFineReport(HttpServletRequest req) {
String id = req.getParameter("id");
String fineReportPath = "../WebReport/ReportServer?reportlet="+id+".cpt";
req.setAttribute("fineReport", fineReportPath);
return new ModelAndView("xiaohaojiao/fineReport");
} /**
* 有查询条件需要控制页面权限帆软报表页面跳转方法
* @param req
* @return
* @throws ParseException
*/
@RequestMapping(params = "goFineReportForParams")
public ModelAndView goFineReportForParams(HttpServletRequest req) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM"); Date date = new Date();
String beginTime = sd.format(date);
String endTime = sdf.format(date);
req.setAttribute("dates", beginTime+"-01");
req.setAttribute("datez", endTime); try {
departIds = RoleUtil.getDeptIds(req,systemService,userService,xhjUserDepartService);
} catch (Exception e) {
e.printStackTrace();
}
String id = req.getParameter("id");
String fineReportPath = "../WebReport/ReportServer?reportlet="+id+".cpt";
req.setAttribute("fineReport", fineReportPath);
req.setAttribute("departIds", departIds);
return new ModelAndView("xiaohaojiao/fineReportForParams");
} /**
* 页面点击查询的时候重新拼接的url,用于重新加载iframe
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(params = "getFineUrl")
@ResponseBody
public AjaxJson getFineUrl(HttpServletRequest request, HttpServletResponse response) throws Exception{
String fineUrl = "";
AjaxJson j = new AjaxJson();
Map<String,Object> map = new HashMap<String ,Object>();
String strMap = request.getParameter("strMap");
JSONObject jb = JSONObject.fromObject(strMap);
Map filterMap = (Map)jb;
fineUrl = ((String) filterMap.get("url")).split("&")[0];
Iterator<String> iter = filterMap.keySet().iterator(); while (iter.hasNext()) {
String key = iter.next();
String value = (String) filterMap.get(key);
if (!"url".equals(key)) {
fineUrl = fineUrl + "&" + key + "=" + (value==null?"":value);
}
}
map.put("fineUrl", fineUrl);
net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(map);
j.setMsg(jsonArray.toString());
return j;
}
}
帆软报表和jeecg的进一步整合--ajax给后台传递map类型的参数的更多相关文章
- JEECG与帆软报表集成
将FineReport 集成到自己的web项目中,生成报表,可以方便快捷的和自己的项目融合在一起.简化了利用poi的导出遇到的问题. 1.首先在FR中建立好一个模板 例如:我的这张模板是连接 ...
- 帆软报表FineReport SQLServer数据库连接失败常见解决方案
1. 问题描述 帆软报表FineReport客户端连接SQLServer(2000.2005等),常常会出现如下错误:com.microsoft.sqlserver.jdbc.SQLServerExc ...
- 帆软报表FineReport中数据连接之Weblogic配置JNDI连接
1. 制作报表的原理 在帆软报表FineReport设计器中先用JDBC连接到数据库,建立数据库连接,然后用SQL或者其他方法创建数据集,使用数据集制作报表,然后把建立的数据库连接从JDBC连接改成J ...
- 帆软报表FineReport中数据连接之Jboss配置JNDI连接
使用sqlsever 2000数据库数据源来做实例讲解,帆软报表FineReport数据连接中Jboss配置JNDI大概的过程和WEBSPHERE以及WEBLOGIC基本相同,用JDBC连接数据库制作 ...
- 帆软报表FineReport中数据连接之Websphere配置JNDI连接
以oracle9i数据源制作的模板jndi.cpt为例来说明如何在FineReport中的Websphere配置JNDI连接.由于常用服务器的JNDI驱动过大,帆软报表FineReport中没有自带, ...
- 帆软报表FineReport中数据连接之Tomcat配置JNDI连接
1. 问题描述 在帆软报表FineReport中,通过JNDI方式定义数据连接,首先在Tomcat服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,即可成功使用JNDI连接,连接步骤如下: ...
- 帆软报表FineReport中数据连接的JDBC连接池属性问题
连接池原理 在帆软报表FineReport中,连接池主要由三部分组成:连接池的建立.连接池中连接使用的治理.连接池的关闭.下面就着重讨论这三部分及连接池的配置问题. 1. 连接池原理 连接池技术的核心 ...
- 帆软报表(finereport)单元格中各颜色标识的含义
帆软报表(finereport)单元格中,可根据单元格角标的颜色判断单元格进行的操作 过滤:单元格左下角黄色三角形 条件属性:单元格左上角红色三角形. 控件:单元格右侧中间的各种矩形. 左父格:单 ...
- 帆软报表(finereport)安装/配置
1.首先是安装帆软报表软件 下载地址:http://www.finereport.com/product/download 激活码注册格账号就有了 2.启动软件,新建连接数据库 点 ...
随机推荐
- C# ftp ListFilesOnServer
public static bool ListFilesOnServer(Uri serverUri) { // The serverUri should start with the ftp:// ...
- 【Android 百度地图实战】2.几种地图图层的显示
具体代码官网API已提供,地址在这. 效果图如下: 主要代码: // 创建选项菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { ...
- CDN具体解释(篇一)
CDN是一个致力于使内容传输更快.更高效的针对webserver的全局分布式网络.通过CDN来复制使这些内容能够在非常多地方同一时候存在. 比較有名的CDN厂商有AKamari,Amazon Clou ...
- java面试第十一天
多线程: 进程与线程: 进程:同一个操作系统中执行的一个子程序,包含了三部分虚拟CPU.代码.数据 多进程:同一个操作系统中执行的多个并行的子程序.可以提高cpu的使用率 线程:在同一个进程当中执行的 ...
- 1z0-052 q209_7
7: In which of the scenarios will the DBA perform recovery? (Choose all that apply.) A.The alert log ...
- ios上线流程
一.前言: 作为一名iOSer,把开发出来的App上传到App Store是必要的.下面就来详细讲解一下具体流程步骤. 二.准备: 一个已付费的开发者账号(账号类型分为个人(Individual).公 ...
- js setTimeout 传递带参数的函数的2种方式
js setTimeout 传递带参数的函数的2种方式 Created by Marydon on 2018年9月14日 1.准备工作 function sayYourName(param) { ...
- js setInterval() 用法示例
Created by Marydon on 1.定义 语法:setInterval(param1,param2) param1 要调用的函数或要执行的代码串. param2 周期性调用param1 ...
- js图片加载效果(延迟加载+瀑布流加载)
概述 两种图片加载的效果:一种是遇到图片较多时,带读条效果的加载提示:另一种是根据滑块的位置进行预加载,用户不察觉的情况下,实现瀑布流的加载效果 详细 代码下载:http://www.demodash ...
- LR杂记 - 性能測试指标及经常使用的监控工具
监控指标 性能測试通常须要监控的指标包含: 1.serverLinux(包含CPU.Memory.Load.I/O). 2.数据库:1.Mysql 2.Oracle(缓存命中.索引.单条SQL性能.数 ...