帆软报表和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.启动软件,新建连接数据库 点 ...
随机推荐
- matlab:eval用法
1.自动生成变量 % auto general variabalsb=rand(3,3)for i=1:8 eval(['a_',num2str(i),'=','b(',num2str(i),' ...
- Socket 之 传值方式
一.传送 DataTable 和 DataSet 1.发送端需序列化数据为二进制序列化格式 public static byte[] GetBinaryFormatDataSet(DataSet ds ...
- miniupnpc
upnp端口映射: http://bbs.csdn.net/topics/70382968 UPnP端口映射实现过程(二) http://blog.csdn.net/jiuaiwo1314/artic ...
- berkelydb学习
http://www.oracle.com/technetwork/cn/java/seltzer-berkeleydb-sql-085418-zhs.html 官网中文学习网址
- PHP高级教程-Error
PHP 错误处理 在 PHP 中,默认的错误处理很简单.一条错误消息会被发送到浏览器,这条消息带有文件名.行号以及描述错误的消息. PHP 错误处理 在创建脚本和 Web 应用程序时,错误处理是一个重 ...
- Java从零开始学二十八(Math类和Random类)
一.Math概述 提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率) 二.常用方法 package com.pb.demo1; public class MathTest { ...
- 网页中的图片查看器viewjs使用
需求分析: 对于网页中的图片进行连续放大(便于用户清晰查看内容).缩小,旋转等操作,可以使用viewjs图片查看器插件实现. viewjs官方网址:https://github.com/fengyua ...
- Flash打开新窗口 被浏览器拦截问题 navigateToURL被拦截 真正试验结果
众所周知,打开新窗口以前经常被用作弹出广告用,而随着浏览器发展,现在估计除了ie6之外,基本都有广告拦截功能,最基本就是拦截这种非人为的弹出新窗口.我对js研究不深,我所了解就是,必须是用户操作的处理 ...
- KnockoutJS + My97DatePicker
如何将Knockoutjs和其他脚本库结合使用?这里给出一个Knockoutjs与my97datepicker配合使用的例子,例子中使用了ko的自定义绑定功能: ko.bindingHandlers. ...
- iOS打包framework - Swift完整项目打包Framework,嵌入OC项目使用
场景说明: -之前做的App,使用Swift框架语言,混合编程,内含少部分OC代码. -需要App整体功能打包成静态库,完整移植到另一个App使用,该App使用OC. -所以涉及到一个语言互转的处理, ...