下面是页面代码:

<%@ 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类型的参数的更多相关文章

  1. JEECG与帆软报表集成

    将FineReport 集成到自己的web项目中,生成报表,可以方便快捷的和自己的项目融合在一起.简化了利用poi的导出遇到的问题. 1.首先在FR中建立好一个模板      例如:我的这张模板是连接 ...

  2. 帆软报表FineReport SQLServer数据库连接失败常见解决方案

    1. 问题描述 帆软报表FineReport客户端连接SQLServer(2000.2005等),常常会出现如下错误:com.microsoft.sqlserver.jdbc.SQLServerExc ...

  3. 帆软报表FineReport中数据连接之Weblogic配置JNDI连接

    1. 制作报表的原理 在帆软报表FineReport设计器中先用JDBC连接到数据库,建立数据库连接,然后用SQL或者其他方法创建数据集,使用数据集制作报表,然后把建立的数据库连接从JDBC连接改成J ...

  4. 帆软报表FineReport中数据连接之Jboss配置JNDI连接

    使用sqlsever 2000数据库数据源来做实例讲解,帆软报表FineReport数据连接中Jboss配置JNDI大概的过程和WEBSPHERE以及WEBLOGIC基本相同,用JDBC连接数据库制作 ...

  5. 帆软报表FineReport中数据连接之Websphere配置JNDI连接

    以oracle9i数据源制作的模板jndi.cpt为例来说明如何在FineReport中的Websphere配置JNDI连接.由于常用服务器的JNDI驱动过大,帆软报表FineReport中没有自带, ...

  6. 帆软报表FineReport中数据连接之Tomcat配置JNDI连接

    1. 问题描述 在帆软报表FineReport中,通过JNDI方式定义数据连接,首先在Tomcat服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,即可成功使用JNDI连接,连接步骤如下: ...

  7. 帆软报表FineReport中数据连接的JDBC连接池属性问题

    连接池原理 在帆软报表FineReport中,连接池主要由三部分组成:连接池的建立.连接池中连接使用的治理.连接池的关闭.下面就着重讨论这三部分及连接池的配置问题. 1. 连接池原理 连接池技术的核心 ...

  8. 帆软报表(finereport)单元格中各颜色标识的含义

    帆软报表(finereport)单元格中,可根据单元格角标的颜色判断单元格进行的操作 过滤:单元格左下角黄色三角形 条件属性:单元格左上角红色三角形.  控件:单元格右侧中间的各种矩形.  左父格:单 ...

  9. 帆软报表(finereport)安装/配置

    1.首先是安装帆软报表软件 下载地址:http://www.finereport.com/product/download           激活码注册格账号就有了 2.启动软件,新建连接数据库 点 ...

随机推荐

  1. Cocos2d-x教程(31)-TableView的滚动栏

    欢迎增加Cocos2d-x 交流群:193411763 转载时请注明原文出处 :http://blog.csdn.net/u012945598/article/details/38587659 在非常 ...

  2. 【statistics】查看2018.4.25日理想论坛某ID在一天中的活跃情况

    用于统计的sum.py代码: import re import pymysql # 入口函数 def main(): dic={'00':0,'01':0,'02':0,'03':0,'04':0,' ...

  3. 防盗链Nginx设置图片防盗链,设置无效的请仔细看红字

    *******************************************************************切记,替换的图片地址要使用没有防盗链的网站图片,否则由于替换的图片 ...

  4. Mockito: InvalidUseOfMatchersException

    异常报错信息: org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument match ...

  5. Java从零开始学十五(继承)

    一.继承作用 继承使用复用以前的代码非常容易,能够大大的缩短开发周期,降低开发成本,同时增加程序的易维护性 继承使重一个类A能够直接使用另外一个类B的属性和方法的一种途径 类A可以有自己的属性和方法 ...

  6. 解析 神奇的 Object.defineProperty

    这个方法了不起啊..vue.js和avalon.js 都是通过它实现双向绑定的..而且Object.observe也被草案发起人撤回了..所以defineProperty更有必要了解一下了几行代码看他 ...

  7. 很不错标签云js插件

    在蓝色看到有需要标签云的球形效果,我记得之前在网上见到过,印象比较深刻,就找出地址发给他了,接下来却还有人需要这个效果的JQuery插件,网上好像也有,但是我看现在这个就不错,就想想自己改成jquer ...

  8. 修改MySQL数据文件的位置

    1:查看MySQL服务名称 2:管理员启动控制台 3:修改配置文件my.ini中数据文件的位置,[注]修改完成之后要把响应的数据文件从旧目录拷贝到新目录当中. 4:重新启动服务 5:登录数据库查看数据 ...

  9. yml 配置文件注入

    配置文件 JavaBean 自动提示 测试

  10. vue 源码 断点调试

    1.添加sourceMap sourceMap: true 2.npm run dev 会生成vue.js.map 3.断点调试 <!DOCTYPE html> <html> ...