Cannot forward after response has been committed...
raghu88 Sep 10, 2012 3:19 AMHi to all,
i want to export some data to an excel file while downloading the file i got the following exception .......but after downloading the excel file i am trying to open it is saying like "the file you are trying to open .xls is in a different format than specified by the file extension"please any one help me how to solve this one.....
this is my error log...........
Servlet.service() for servlet action threw exception: java.lang.IllegalStateException: Cannot forward after response has been committed
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:417) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:407) [:6.1.0.Final]
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063) [:1.2.7]
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386) [:1.2.7]
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229) [:1.2.7]
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) [:1.2.7]
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) [:1.2.7]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [:1.0.0.Final]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
at com.zyom.security.LoginMonitorFilter.doFilter(LoginMonitorFilter.java:67) [:]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final]
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final]
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final]
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]
at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]
at java.lang.Thread.run(Thread.java:619) [:1.6.0_13]
- package com.zyom.struts.ats.action;
- import java.io.File;
- import java.text.NumberFormat;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import javax.servlet.ServletContext;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import jxl.Workbook;
- import jxl.write.Colour;
- import jxl.write.Label;
- import jxl.write.WritableCellFormat;
- import jxl.write.WritableFont;
- import jxl.write.WritableSheet;
- import jxl.write.WritableWorkbook;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionMapping;
- import org.apache.struts.actions.DownloadAction;
- import org.apache.struts.actions.DownloadAction.ResourceStreamInfo;
- import org.apache.struts.actions.DownloadAction.StreamInfo;
- import com.zyom.reuse.util.DateHandler;
- import com.zyom.struts.form.CmForm;
- import com.zyom.struts.form.DemandFGForm;
- import com.zyom.webclient.util.DBHelper;
- import com.zyom.webclient.util.AtsHelper;
- import com.zyom.webclient.util.DemandSupplyItem;
- import com.zyom.webclient.util.MozartCostUtils;
- import com.zyom.struts.form.MapCustomerForm;
- public class RegionCustUserMapXlAction extends DownloadAction {
- protected StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- Date currentDatetime = new Date(System.currentTimeMillis());
- SimpleDateFormat formatter = new SimpleDateFormat("MM-dd-yyyy-HH-mm");
- String myDate = formatter.format(currentDatetime);
- String myDate1 = formatter.format(currentDatetime);
- String fileName = "RegCustUsrMap_"+myDate+".xls";
- String contentType = "application/vnd.ms-excel";
- ServletContext servletCtx = this.servlet.getServletContext();
- try{
- String path = servletCtx.getRealPath(fileName);
- WritableWorkbook workbook = Workbook.createWorkbook(new File(path));
- HttpSession session = request.getSession(true);
- List cust_list=new ArrayList();
- cust_list=(ArrayList)session.getAttribute("cust_list");
- jxl.write.Number num;
- Calendar stDate = Calendar.getInstance();
- Calendar endDate = Calendar.getInstance();
- String temp = "";
- SimpleDateFormat formatter1 = new SimpleDateFormat("MMM-dd,yyyy");
- WritableSheet sheet = workbook.createSheet("RegCustUsrMap_"+myDate1, 1);
- WritableFont arial10font = new WritableFont(WritableFont.ARIAL, 10);
- WritableCellFormat arial10format = new WritableCellFormat (arial10font);
- // sheet.mergeCells(0,0,2,0);
- WritableFont times16font = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, true);
- WritableCellFormat times16format = new WritableCellFormat (times16font);
- times16format.setAlignment(jxl.format.Alignment.CENTRE);
- // times16format.setBackground(Colour.BLUE);
- times16format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.MEDIUM,Colour.BLACK);
- WritableFont datafont = new WritableFont(WritableFont.ARIAL , 10);
- WritableFont datafont1 = new WritableFont(WritableFont.ARIAL , 10);
- WritableFont datafont2 = new WritableFont(WritableFont.ARIAL , 10);
- datafont1.setColour(Colour.BLUE);
- datafont2.setColour(Colour.RED);
- datafont.setColour(Colour.BLACK);
- WritableCellFormat dataformat = new WritableCellFormat (datafont2);
- WritableCellFormat dataformatApproved = new WritableCellFormat (datafont);
- WritableCellFormat dataformatnotApproved = new WritableCellFormat (datafont1);
- WritableCellFormat dataformatApproved1 = new WritableCellFormat (datafont);
- dataformat.setAlignment(jxl.format.Alignment.LEFT);
- dataformatApproved.setAlignment(jxl.format.Alignment.LEFT);
- dataformatnotApproved.setAlignment(jxl.format.Alignment.LEFT);
- dataformatApproved.setBackground(jxl.format.Colour.YELLOW);
- dataformatApproved1.setAlignment(jxl.format.Alignment.LEFT);
- dataformatApproved1.setBackground(jxl.format.Colour.BRIGHT_GREEN);
- // times16format.setBackground(Colour.BLUE);
- dataformatApproved.setBorder(jxl.format.Border.ALL , jxl.format.BorderLineStyle.MEDIUM_DASHED ,Colour.BLACK);
- dataformatApproved1.setBorder(jxl.format.Border.ALL , jxl.format.BorderLineStyle.MEDIUM_DASHED ,Colour.BLACK);
- Label label = new Label(0, 0, "Region Customer User Map",arial10format);
- sheet.addCell(label);
- label=new Label(0,2,"As of: ",arial10format);
- sheet.addCell(label);
- label=new Label(1,2,DateHandler.getTodaysDate(),arial10format);
- sheet.addCell(label);
- int i=0;
- int j=3;
- j++;
- label = new Label(i, j, "Sales Region" ,times16format);
- sheet.addCell(label);
- i++;
- label = new Label(i, j, "ROLES MAPPED AT REGION LEVEL (ALL EXCEPT SALES ID)" ,times16format);
- sheet.addCell(label);
- i++;
- label = new Label(i, j, "Customer" ,times16format);
- sheet.addCell(label);
- i++;
- label = new Label(i, j, "Country" ,times16format);
- sheet.addCell(label);
- i++;
- label = new Label(i, j, "Sales Id" ,times16format);
- sheet.addCell(label);
- i++;
- while(endDate.after(stDate)){
- label = new Label(i, j, formatter1.format(new java.util.Date(stDate.getTimeInMillis())) ,times16format);
- sheet.addCell(label);
- i++;
- stDate.add(Calendar.DATE, 7);
- }
- for (int count = 0; count < cust_list.size(); count++) {
- MapCustomerForm mapCustomerForm=new MapCustomerForm();
- mapCustomerForm = (MapCustomerForm) cust_list.get(count);
- j++;
- i=0;
- label = new Label(i, j, mapCustomerForm.getRegion(),arial10format);
- sheet.addCell(label);
- i++;
- label = new Label(i, j, mapCustomerForm.getUser_names(),arial10format);
- sheet.addCell(label);
- i++;
- label = new Label(i, j,mapCustomerForm.getCustomer(),arial10format);
- sheet.addCell(label);
- i++;
- label = new Label(i, j, mapCustomerForm.getLocation(),arial10format);
- sheet.addCell(label);
- i++;
- label = new Label(i, j,mapCustomerForm.getSalesid(),arial10format);
- sheet.addCell(label);
- i++;
- }
- j=j+2;
- workbook.write();
- workbook.close();
- }catch(Exception e){
- System.out.print(e);
- }
- /*response.setHeader("Content-disposition", "attachment;filename="+ fileName );
- final java.io.OutputStream os = response.getOutputStream();
- os.flush();
- os.close();*/
- response.setContentType("application/vnd.ms-excel");
- response.setHeader("Content-disposition","inline;fileName=" + fileName);
- final java.io.OutputStream os = response.getOutputStream();
- os.flush();
- return new ResourceStreamInfo(contentType, servletCtx, fileName);
- }
- }