Can not find a java.io.InputStream with the name [renderResult] in the invocatio

问题描述

在编写文件下载的过程中,点击下载,然后出现这个错误:Cannotfindajava.io.InputStreamwiththename[renderResult]intheinvocationstack.Checkthe<paramname="inputName">tagspecifiedforthisaction.异常trace如下:java.lang.IllegalArgumentException:Cannotfindajava.io.InputStreamwiththename[renderResult]intheinvocationstack.Checkthe<paramname="inputName">tagspecifiedforthisaction.org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:237)源代码如下:packageorg.xjtu.framework.modules.normalUser.action;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.util.Map;importjava.util.zip.ZipEntry;importjava.util.zip.ZipOutputStream;importorg.apache.struts2.convention.annotation.Action;importorg.apache.struts2.convention.annotation.Namespace;importorg.apache.struts2.convention.annotation.ParentPackage;importorg.apache.struts2.convention.annotation.Result;importorg.xjtu.framework.core.base.model.User;@ParentPackage("struts-default")@Namespace("/web/user")publicclassDownloadActionextendsUserBaseAction{privatestaticfinalintBUFFEREDSIZE=1024;ByteArrayInputStreamrenderResult;StringdownloadFileName="";privateUseruser;@Action(value="downloadRenderResult",results={@Result(name=ERROR,type="httpheader",params={"status","204"}),@Result(name=SUCCESS,type="stream",params={"contentType","application/zip","inputName","renderResult","contentDisposition","attachment;filename=${downloadFileName}.zip","bufferSize","1024"})})publicStringdownloadRenderResult()throwsException{user=(User)session.get("user");System.out.println(user.getName());ByteArrayOutputStreamoutput=newByteArrayOutputStream();ZipOutputStreamzos=newZipOutputStream(output);Stringpath="/home/RenderFarm/apache-tomcat-6.0.37/logs/";log.info(path);//user.getHomeDir()+"building/Pictures";Filefile=newFile(path);this.downloadFileName="result";zip(file,zos,"result");//清空缓冲区数据,这一步务必先执行zos.flush();zos.close();byte[]ba=output.toByteArray();renderResult=newByteArrayInputStream(ba);System.out.println(renderResult);log.info(path);if(renderResult==null){log.info("renderResult是空的");}else{log.info("renderResult不是空的");}output.flush();output.close();returnSUCCESS;}privatesynchronizedvoidzip(FileinputFile,ZipOutputStreamout,Stringbase)throwsIOException{if(inputFile.isDirectory()){File[]inputFiles=inputFile.listFiles();out.putNextEntry(newZipEntry(base+"/"));base=base.length()==0?"":base+"/";for(inti=0;i<inputFiles.length;i++){zip(inputFiles[i],out,base+inputFiles[i].getName());}}else{if(base.length()>0){out.putNextEntry(newZipEntry(base));}else{out.putNextEntry(newZipEntry(inputFile.getName()));}FileInputStreamin=newFileInputStream(inputFile);try{intc;byte[]by=newbyte[BUFFEREDSIZE];while((c=in.read(by))!=-1){out.write(by,0,c);}}catch(IOExceptione){throwe;}finally{in.close();}}}}最后查看日志得到如下信息,显示路径不为空,且存在无误,并且renderResult不为空。11:29:42,362-org.xjtu.framework.modules.normalUser.action.DownloadAction-32100[http-8080-1]INFOorg.xjtu.framework.modules.normalUser.action.DownloadAction-/home/RenderFarm/apache-tomcat-6.0.37/logs/org.xjtu.framework.modules.normalUser.action.DownloadAction-32476[http-8080-1]INFOorg.xjtu.framework.modules.normalUser.action.DownloadAction-[color=#FF0000]renderResult不是空的[/color][framework]2014-09-3011:29:42,762-org.apache.struts2.dispatcher.StreamResult-32500[http-8080-1]ERRORorg.apache.struts2.dispatcher.StreamResult-Cannotfindajava.io.InputStreamwiththename[renderResult]intheinvocationstack.Checkthe<paramname="inputName">tagspecifiedforthisaction求各位大神解决啊。。。log.info(path);if(renderResult==null){log.info("renderResult是空的");}else{log.info("renderResult不是空的");}

解决方案

时间: 2024-08-08 15:22:16

Can not find a java.io.InputStream with the name [renderResult] in the invocatio的相关文章

Java IO: InputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) InputStream类是Java IO API中所有输入流的基类.InputStream子类包括FileInputStream,BufferedInputStream,PushbackInputStream等等.参考Java IO概述这一小节底部的表格,可以浏览完整的InputStream子类的列表. Java InputStream例子 InputStream用于读取基于字节的数据,一

java IO之 File类+字节流 (输入输出 缓冲流 异常处理)

1. File类 File 路径问题: 上下级文件夹之间使用分隔符分开: 在Windows中分隔符为'\' ,在Unix/Linux中分隔符为'/' 跨平台分隔符: 专业的做法是使用File.separatorChar,这个值会根据系统得到的相应的分隔符. 例:new File("c:"+File.separatorChar+"a.txt"); 注意,如果是使用"\" ,则需要进行转义,写为"\\"才可以     绝对路径与相

使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法

使用HttpURLConnection下载文件时经常会出现 java.io.FileNotFoundException文件找不到异常,下面介绍下解决办法 首先设置tomcat对get数据的编码:conf/server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncodin

Java IO: 流

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Java IO流是既可以从中读取,也可以写入到其中的数据流.正如这个系列教程之前提到过的,流通常会与数据源.数据流向目的地相关联,比如文件.网络等等. 流和数组不一样,不能通过索引读写数据.在流中,你也不能像数组那样前后移动读取数据,除非使用RandomAccessFile 处理文件.流仅仅只是一个连续的数据流. 某些类似PushbackInputStream 流的实现允许你将数据重新推回

Java IO包装流如何关闭

问题: (1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方吗? (2)如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭? 问题(1)解释: 如下例子代码: 1 2 3   FileInputStream is = new FileInputStream(".");      BufferedInputStream bis = new BufferedInputStream(is);     bis.close(); 从设计模式上

Java IO教程

Java IO 是一套Java用来读写数据(输入和输出)的API.大部分程序都要处理一些输入,并由输入产生一些输出.Java为此提供了java.io包. 如果你浏览下java.io包,会对其中各样的类选择感到迷惑.这些类的作用都是什么?对于某个任务该选择哪个类?怎样创建你自己的类做插件?这个手册的目的就是给你介绍这些类是如何组织的,以及怎样使用他们,因此你就不会疑惑需要时怎样选取合适的类,或者是否有一个满足你需求的类已经存在了. Java.io 包的范围 java.io 包并没有涵盖所有输入输出

我的Java开发学习之旅------&amp;gt;JAVA IO 设计模式彻底分析

本文转载于网络. 一.引子(概括地介绍Java的IO) 无论是哪种编程语言,输入跟输出都是重要的一部分,Java也不例外,而且Java将输入/输出的功能和使用范畴做了很大的扩充.它采用了流的 机制来实现输入/输出,所谓流,就是数据的有序排列,而流可以是从某个源(称为流源或Source of Stream)出来,到某个目的地(称为流汇或Sink of Stream)去的.由流的方向,可以分成输入流和输出流,一个程序从输入流读取数据向输出流写数据. 如,一个程序可以用FileInputStream类

Java IO流系统整理

Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图像或声音的二进制数据. 字符流:以字符(16位二进制)为单位进行处理. 都是通过字节流的方式实现的.字符流是对字节流进行了封装,方便操作.在最底层,所有的输入输出都是字节形式的. 后缀是Stream是字节流,而后缀是Reader,Writer是字符流.  

Java IO文件编码转换实现代码_java

对IO操作真心不是很懂...对编码.乱码也是一知半解...今天遇到了一个需求,要求将一个文件进行编码转换,并且返回编码后的字符串,如原本的GBK编码,转换为UTF-8 其中这个BytesEncodingDetect 类就不贴了.主要用了里面的获取文件编码格式. 刚开始试了直接在源文件修改编码方式,采用URLEncoder和URLDecoder进行转换,却迟迟不行.出现了中文奇数最后一个字乱码 百度找了解决方法,都未果,只好采用我的思路是:先读取源文件的内容,存放到StringBuffer里面,然