文档章节

jeecg中上传附件的处理

z_jordon
 z_jordon
发布于 2015/04/21 10:36
字数 561
阅读 5158
收藏 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
博文 251
码字总数 78212
作品 0
厦门
技术主管
jeecg3.5中的导入excel文件的使用及完善

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

z_jordon
2015/04/17
0
0
【发布】JEECG 3.6.3版本发布 企业级JAVA快速开发平台

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

Jeecg
2016/04/12
66
0
JEECG 3.6.3 发布 企业级JAVA快速开发平台

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

Jeecg
2016/04/11
5.6K
0
JEECG 3.5.0 GA 发布,JAVA智能开发平台

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

Jeecg
2015/03/10
24.4K
21
JEECG Framework 3.4.1 beta 版本发布

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

Jeecg
2013/11/18
2.4K
3

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu 18.04 desktop 截图快捷键

如图,点击下方的 add shortcut 为这个快捷键命名 输入截图 command gnome-screenshot -a 设置快捷键 常用为 Ctrl - Alt + a 参考 http://os.51cto.com/art/200903/113091_all.htm...

公孙衍
14分钟前
0
0
一个六年Java程序员的从业总结:比起掉发,我更怕掉队

恍然间,发现自己在这个行业里已经摸爬滚打了五、六年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫...

老道士
16分钟前
12
0
Spacemacs快捷键

由于Spacemacs快捷键太多,为方便使用,将常用的快捷键记录在此。 以下快捷键都是在emacs的evil模式下 Buffers操作 创建名称为<buffer-name>的buffer SPC b b <buffer-name> 从已打开的buf...

yxmsw2007
21分钟前
1
0
GO冒泡,二分查找

package mainimport("fmt")func main() {var arr [5]int = [5]int{11,13,9,2,25}maopao(&arr)fmt.Println("arr = ", arr) //[2 9 11 13 25]findIndex := binaryFind(&arr, 0......

汤汤圆圆
45分钟前
1
0
工作2年半跳槽面试阿里,成功拿到offer,凭什么?

2015年刚毕业的我,进入了一家小小的公司实习工作,在学校学了三年软件开发的我,还是想去寻找一份互联网行业的工作,这样更能学以致用发挥自己的特长。一直到18年三月份,我辞掉已有的工作,...

java知识分子
49分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部