文档章节

jeecg中上传附件的处理

z_jordon
 z_jordon
发布于 2015/04/21 10:36
字数 561
阅读 4873
收藏 0
点赞 1
评论 0

在jeecg中如果用了formvalid标签来生成表单代码的话,是不能同时提交附件的,比如最常用的html标签 input type="file"是不能用的,后台接收不到附件,具体原因是因为jeecg中都是用ajax的方式来提交表单并且不支持附件的处理,如果要在表单中同时提交附件,只能使用jeecg的upload标签,并且附件的提交和表单其它参数的提交实际上是分两步来处理的,具体实现过程如下:

  1. 在需要上传附件的地方增加upload标签:

<t:upload name="fiels" id="file_upload" extend="txt" buttonText="添加文件" multi="false" formData="taskId" uploader="smTaskController.do?importTxt">
            </t:upload>

其中比较主要的属性是formData和uploader,formData属性是在上传附件是要一起提交的表单参数,一般是传业务表的主键,uploader属性是具体的处理附件的提交路径

2.在fomrvalid标签中增加callback属性

<t:formvalid formid="formobj" dialog="true" layout="table" action="smTaskController.do?save" callback="@Override uploadFile">

3. 在页面顶部head之间增加相应的处理代码:

<script type="text/javascript">
  $(function(){
    //查看模式情况下,删除和上传附件功能禁止使用
    if(location.href.indexOf("load=detail")!=-1){
        $(".jeecgDetail").hide();
    }
   });
 
      function uploadFile(data){
          $("#taskId").val(data.obj.id);
          if($(".uploadify-queue-item").length>0){
              upload();
          }else{
              frameElement.api.opener.reloadTable();
              frameElement.api.close();
          }
      }
       
      function close(){
          frameElement.api.close();
      }
  </script>

其中最主要的就是uploadFile这个函数了,这边的主要逻揖就是获取业务表保存成功后返回的业务表的唯一标识设置在表单的隐藏属性当中,然后调用upload方法上传附件

4.最后在controller接收附件并处理,如下:

@RequestMapping(params = "importTxt", method = RequestMethod.POST)
	@ResponseBody
	public AjaxJson importTxt(HttpServletRequest request) {
		AjaxJson j = new AjaxJson();
		String taskId = request.getParameter("taskId");
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
		Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
		for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
			try {
				
				this.smTaskService.saveFile(taskId, entity.getValue().getInputStream());
				message = "短信任务添加成功";
			} catch (IOException e1) {
				e1.printStackTrace();
				message = "短信任务添加失败";
			} finally {
				try {
					entity.getValue().getInputStream().close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
		j.setMsg(message);
		return j;
	}

其中要把HttpServletRequest参数强制转化为MultipartHttpServletRequest类型后再获取文件流进行处理,用springmvc中的@RequestParam MultipartFile参数直接获取附件是获取不到的,具体原因不是太清楚。

© 著作权归作者所有

共有 人打赏支持
z_jordon
粉丝 35
博文 250
码字总数 78212
作品 0
厦门
技术主管
jeecg3.5中的导入excel文件的使用及完善

jeecg中导入导出excel文件使用了jeecg团队自己开发的一个easypoi库,所以使用起来非常简单,以我项目中导入黑名单列表功能为例: 在实体中增加注解 先增加类的注解: @ExcelTarget("blackLis...

z_jordon ⋅ 2015/04/17 ⋅ 0

【发布】JEECG 3.6.3版本发布 企业级JAVA快速开发平台

JEECG 3.6.3版本发布 企业级JAVA快速开发平台 JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台。引领新的开发模式(OnlineCoding模式->代码生成器模式->手工MERGE智能开发)...

Jeecg ⋅ 2016/04/12 ⋅ 0

JEECG 3.6.3 发布 企业级JAVA快速开发平台

JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台。引领新的开发模式(OnlineCoding模式->代码生成器模式->手工MERGE智能开发), 可以帮助解决Java项目60%的重复工作,让开发...

Jeecg ⋅ 2016/04/11 ⋅ 0

JEECG 3.5.0 GA 发布,JAVA智能开发平台

JEECG Framework 3.5.0 GA 新春版本发布《数据权限、多数据源、国际化、三大模块》 平台介绍: JEECG(J2EE Code Generation): 是一款基于代码生成器的JAVA智能开发平台。 引领新开发模式(...

Jeecg ⋅ 2015/03/10 ⋅ 21

JEECG Framework 3.4.1 beta 版本发布

JEECG简介: JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台,代码生成 + Online Coding在线开发,可以帮助解决Java项目80%的重复工作,让开发更多关注业务逻辑。既能快速...

Jeecg ⋅ 2013/11/18 ⋅ 3

JEECG 3.7.1 版本发布,企业级 JAVA 快速开发平台

JEECG 3.7.1 版本发布,企业级JAVA快速开发平台 ———————————————————————————————————————— Version: Jeecg3.7.1 项 目: JEECG 企业级快速开发平台...

Jeecg ⋅ 2017/09/17 ⋅ 0

JEECG 3.7.5 Vue SPA 单页面应用版本发布

此版本为Vue+ElementUI SPA单页面应用版本,提供新一代风格代码生成器模板,采用Vue技术,提供两套精美模板ElementUI风格、Bootstrap分隔,大家速度体验,新鲜出炉,哇咔咔!! JEECG 是一款基...

Jeecg ⋅ 05/31 ⋅ 0

JEECG 3.7 跨时代重构精华版发布,JAVA 快速开发平台

JEECG 3.7 跨时代重构精华版发布,企业级J2EE快速开发平台 升级日志: 此版本为跨时代精良重构版,简化平台功能,优化系统性能,制作详细开发手册,公司项目平台最佳选择! 精简平台代码,重...

Jeecg ⋅ 2017/04/20 ⋅ 9

JEECG 3.3.1 beta 发布,智能开发平台

JEECG Framework 3.3.1 beta 发布了,主要改进记录包括: 1. Bootstrap首页风格 2. Online Coding开发模式(无需编码,通过配置实现表单增删改查功能) 3. 动态报表配置(用户配置一个SQL,即...

oschina ⋅ 2013/08/05 ⋅ 6

jeewx 部署 启动未成功的一些可能原因

jeecg数据库脚本问题 注意:jeecg3.5.2之前版本,不需要数据库脚本,程序会自动初始化数据库。从3.5.2+开始,需要手工执行SQL脚本,初始化数据库。 2. Eclipse内存溢出 2014-6-27 15:29:21 o...

王小盼 ⋅ 2016/11/09 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

懒惰根本就不存在

简评:芝加哥大学心理学教授,懒惰根本就不存在。(本文表面讲行为心理学实则讲教育) 金句:以好奇而不是判断来回应一个人的无效行为,是非常有帮助的。 本文「我」代表原作者 E Price。 自...

极光推送 ⋅ 28分钟前 ⋅ 0

Excel提取单元格中最后一个“.”后面的数据

java.lang.String ----- String =TRIM((MID(SUBSTITUTE(B2,".",REPT(" ",99)),(LEN(B2)-LEN(SUBSTITUTE(B2,".","")))*99,99)))...

klog ⋅ 30分钟前 ⋅ 0

mac远程桌面

下载安装remote-desktop-mac Mac beta 客户端 mac通过远程桌面访问windows服务器。

亚林瓜子 ⋅ 34分钟前 ⋅ 0

firrtl

动手---sbt(2)之后,再回头看 chisel第一个实验,根据 https://github.com/freechipsproject/firrtl 发现firrtl没有执行sbt assembly命令,重新执行这个命令,结果成功。如下图: joe@joe-As...

whoisliang ⋅ 38分钟前 ⋅ 0

NIO

一、通道(Channel):用于源节点与目标节点的连接。在 Java NIO 中负责缓冲区中数据的传输。Channel 本身不存储数据,因此需要配合缓冲区进行传输。 二、通道的主要实现类 java.nio.channel...

stars永恒 ⋅ 39分钟前 ⋅ 0

Android悬浮窗的实现

0. 前言   现在很多应用都使用到悬浮窗,例如微信在视频的时候,点击Home键,视频小窗口仍然会在屏幕上显示。这个功能在很多情况下都非常有用。那么今天我们就来实现一下Android悬浮窗,以...

猴亮屏 ⋅ 39分钟前 ⋅ 0

日志采集中的关键技术分析

概述 日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师,他们通过读取日志来排查问题,如今,大量机器日夜处理日志数据以生成可读性的报告以此...

tqyin ⋅ 40分钟前 ⋅ 0

使用Navicat将数据导出为text文本 然后再导入

将数据导出为text文本效率很高 1. 准备工作 1.1 准备表结构 1.2 目标库 执行生成表结构sql 2.将表数据导出为text文本 生成的text文本 3. 目标库 导入text 4.效果...

Lucky_Me ⋅ 46分钟前 ⋅ 0

IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)

文章介绍了idea下,项目乱码、控制台乱码及运行tomcat控制台乱码的解决方案,文章链接:https://www.cnblogs.com/vhua/p/idea_1.html

Funcy1122 ⋅ 49分钟前 ⋅ 0

IDEA使用sonarLint

一、IDEA如何安装SonarLint插件 1.打开 Idea 2.点击【File】 3.点击【Settings】 4.点击【Plugins】 5.在搜索栏中输入“sonarlint”关键字 6.点击【Install】进行安装 7.重启Idea 二、IDEA如...

开源中国成都区源花 ⋅ 54分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部