下面是页面代码:

<%@ 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. NTP Server

    Network Time Protocol互联网时间协议 NTP is intended to synchronize all participating computers to within a ...

  2. Kettle资源库采用SQLserver数据库需要注意的点

    Kettle开源ETL工具有着自己的元数据存储方式,可以分为两种 1:File 2:DB 文件存储我这里就不多说了,下面说一下在用SQLserver2008 R2作为资源库在创建的过程中遇到的问题 K ...

  3. 九度OJ 打印日期 (模拟)

    题目1186:打印日期 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4284 解决:1483 题目描写叙述: 给出年分m和一年中的第n天,算出第n天是几月几号. 输入: 输入包含两个整数 ...

  4. hadoop2.2.0_hbase0.96_zookeeper3.4.5全分布式安装文档下载

    本文档主要内容有: 1.hadoop 2.2.0 集群安装与部署 2.HBase 0.96 集群安装与部署 3.Zookeeper 3.4.5集群安装部署 备注:安装文档可能有所遗漏,后续将持续更新. ...

  5. HTML5游戏,五子棋

    在线演示 本地下载 最近html5的游戏还真是不少,这种在线游戏既简单又有趣.收藏几个在午休时间娱乐一下.何乐而不为呢?喜欢研究的可以下载代码看看.超级推荐!

  6. 给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数。 (即,使用函数rand5()来实现函数rand7())

    给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数. (即,使用函数rand5()来实现函数rand7()). 解答 rand5可以随机生成1,2,3,4,5:rand7可以随机生成1 ...

  7. JDBC二查询(web基础学习笔记八)

    一.建立数据库 --创建news表空间 CREATE TABLESPACE tbs_news DATAFILE 'F:\ORACLE\news.dbf' SIZE 10M AUTOEXTEND ON; ...

  8. sublime Text3 JsFormat

    https://github.com/sprinng/JsFormat 下载解压 放到 首选项 --> 浏览插件目录 重启sublime ctrl+shift+p 安装 使用: 右键JsForm ...

  9. Unity 文字爆炸(风化)消失效果 粒子系统应用

    利用Unity的粒子系统,使用C#代码控制粒子的位置和速度,实现文字风化爆炸的效果. Unity的东西,不像flash,不能直接放到网页中,没办法了,只能放截图了.有兴趣的可以下载看看:text_ex ...

  10. python之函数用法iter()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法iter() #iter() #说明:对一个对象调用 iter() 就可以得到它的迭代 ...