错误:java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [] in the invocation stack. Check the <param name="inputName"> tag specified for this action
说是我栈中没有excelStream。
环境:struts2.3.15+spring3+hibernate4
其他环境有:druid+javamelody
使用的是jxl导出excel
从数据库查询数据,不是读取的文件。
action:
public String filename;
public InputStream excelStream;
get、set方法省略....
public String exportExcel() {
ByteArrayOutputStream targetFile = new ByteArrayOutputStream();
try {
WritableWorkbook workbook = Workbook.createWorkbook(targetFile);
WritableSheet sheet = workbook.createSheet("测试报告", 0);
......其他省略
workbook.write();
workbook.close();
} catch (Exception e) {
System.out.println("在输出到EXCEL的过程中出现错误,错误原因:" + e.toString());
}
excelStream = new ByteArrayInputStream(targetFile.toByteArray());
System.out.println("===================================="+excelStream);
}
struts配置文件:
<result name="excel" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="inputName">excelStream</param>
<param name="contentDisposition">attachment;filename="test.xls"</param>
<param name="bufferSize">1024</param>
</result>
打印出来的inputStream:
====================================java.io.ByteArrayInputStream@124a60b
不是空的啊。
在struts2.18中也是使用的同样的方法,可以导出,但这是什么个情况?,请教大神,很急!!!
------解决方案--------------------
你这个action方法中没有return?!
------解决方案--------------------
如果没有读到这个excel,也就是没有流也会出现这个这个错误的。
------解决方案--------------------
既然用struts了,就要遵从人家的规则,你把流传给excelStream试试,有set、get方法有啥用,又没值。
------解决方案--------------------
<!-- 导出excel -->
<action name="daochuexcel" class="com.wuliuguanli.action.DaochuExcelAction">
<result name="excel" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition"> attachment;filename="${fileName}.xls"</param>
<param name="inputName">excelStream</param>
</result>
</action>
package com.wuliuguanli.action;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import javax.annotation.Resource;
import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Controller;
import com.wuliuguanli.WuliuguanliAction;
import com.wuliuguanli.dao.WuliuguanliDao;
import com.wuliuguanli.entity.Business;
import com.wuliuguanli.util.WuliuguanliException;
@Controller
public class DaochuExcelAction extends WuliuguanliAction{
@Resource WuliuguanliDao dao;
//input
private String ids;
private String fileName;//文件名
//output
private String tempPath;//临时文件目录
public String execute(){
initExcel();
return "excel";
}
public void initExcel(){
String[] ids1=ids.split("-");
// System.out.println(ids1.length);
// for(int i=0;i<ids1.length;i++){
// System.out.println(ids1[i]);
// }
List<Business> bs=new ArrayList<Business>();
int i=0;
for(i=0;i<ids1.length;i++){
Business b=new Business();