at com.pfmg.config.ParamEncFilter.doFilter(ParamEncFilter.java:36)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:361)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:864)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:533)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:207)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)

解决方案 »

  1.   

    Committed before 500 Unable to show problem report: java.lang.IllegalStateException: STREAM
    08:46:00,667 ERROR log:? - /employeemgr!output.do
    你先搜下这个错误是怎么回事
      

  2.   

    在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下employeemgr!output.do这个的请求过程是什么样子的
      

  3.   

    看样子。报了500,这个东西还是自己调试吧,另外楼主为什么要生成xls文件,再去用流读进来下载列
      

  4.   

    //创建一个文件输出流,指定输出到C盘根目录下 
    FileOutputStream fos = new FileOutputStream("c:/upload/temp/employeeInfoTemp.xls");
    你这里本身就是一个  输出流你看你后面,又用response获取输出流你这样    输到---> 文件-->读进来--->输出    你不觉得中间两步多余了吗?
      

  5.   

    有什么好的办法?
    大牛建议一下 
    我的想法是:导出时生成一个xls文件到一个固定的位置,然后在取那个位置读取那个文件然后读取下载。
      

  6.   

    本人一点意见,不对请见谅! 
    Java 环境或 Java 应用不满足请求操作。
    有点不清楚 Employee emp = list.get(i-1);这里为什么要-1呢。
    我想可能就是emp在取值的时候出现了错误吧。
      

  7.   

    都执行了?
    那你能得到resultmap返回值吗?
      

  8.   

    有    return  “导出成功”;
      

  9.   

    那可能就没有所谓。。我记得导出Excel  如果用户点击取消,也会报一个ClientAbortException  
      

  10.   

    java.lang.IllegalStateException: Committed你在文件中搜搜有没有“Committed”这个,看看这个地方是否正确,或者sql全部执行,就提交了事务
      

  11.   

    能不能直接把我生成的Excel写到下载的那个目录里面。
      

  12.   


    可以直接把你的Excel 通过response获取的输出流,写到前台。。  没必要通过FileOutputStream写到本地
      

  13.   


    代码修改如下:

    //定义一个http请求
    HttpServletResponse resp = ServletActionContext.getResponse();
    //设置浏响应的文件类型为.xls
    resp.setContentType("application/x-msdownload");
    //创建一个文件输出流,指定输出到C盘根目录下 
    OutputStream fos = resp.getOutputStream();
    //设置表头
    resp.setHeader("Content-Disposition", "attachment;fileName=" + new String( "employeeInfoTemp.xls".getBytes("gb2312"), "ISO8859-1" ) );
    //把WorkBook写到流里
    wb.write(fos);
    //刷新
    fos.flush();
    //手动关闭流
    fos.close();
      

  14.   

     你把contentType换成:application/vnd.ms-excel
    试试
      

  15.   

    你可以将这个xls文件生成到流里面去,然后再进行下载。
      

  16.   

    服务端对于大数据量的文件产生流返回给客户端时间耗时比较长,客户端接收不到数据会抛出这个错误,事实上并没有影响到结果的输出,只是客户端等待的时间过长,其实你这完全是多走了几步,//创建一个文件输出流,指定输出到C盘根目录下 
    FileOutputStream fos = new FileOutputStream("c:/upload/temp/employeeInfoTemp.xls");
    你到这一步不是已经导出了数据吗?为什么后面还再去读一遍这个文件,再写出?