getOutputStream() has already been called for this response

getOutputStream() has already been called for this response

hi to all,

i am trying to export some data from my project to excel file....while clicking on the icon i am getting the following error.....(i am using jboss6.1.0). help me how to solve this issue?

Servlet.service() for servlet action threw exception: java.lang.IllegalStateException: getOutputStream() has already been called for this response.

here is my jsp code:

<%@ page import="com.zyom.webclient.util.MozartCostUtils,java.util.*,com.zyom.struts.form.AtsRegionsForm,com.zyom.struts.form.MapCustomerForm,com.zyom.reuse.util.DateHandler,com.zyom.webclient.util.MozartConstants"%>
<%@ page language="java" pageEncoding="ISO-8859-1"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
    prefix="bean"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-html"
    prefix="html"%>

<title>JSP for UserLoginForm form</title>
<script type="text/javascript">
function filter_region(){
   var region_id=document.getElementById("regid").value;

   window.location="regionCustUserMap.do?method=Select&r="+region_id;

}
function popHelp(fname)
{

    window.open(fname,"TopAssblyFileformat","width=400,height=250,top=20,left=40,menubar=0,toolbar=0,status=0,location=0,scrollbars=1,resizable=1,dependent=1");
}

</script>
    </head>
    <body>

    <% if ((MozartCostUtils.isFirefox(request))) 
    {
    %>
        <br>
        <%} %>  
         <%
          String finditem="";

          if(request.getAttribute("finditem")!=null)
            finditem=request.getAttribute("finditem").toString();
         String finditem1="";

          if(request.getAttribute("finditem1")!=null)
            finditem1=request.getAttribute("finditem1").toString();
         %>
            <table>

                <tr>
                    <td    class="loggedinlabel"  >
                        Review Sales Regions, Roles Mapped to Regions (Exec, Cust User, ApAdm), Customer related data     <a       rel="nofollow">Help</a>  <br>
                    </td>
                    </tr>
                    <tr><td>Â </td></tr>
            </table>
            <table>
            <tr>
            <td  class="loggedinlabel"   >                  
                    <form  method="post" action="regionCustUserMap.do">
                     <input type="text"  class="loggedin"  value="<%=finditem %>" name="search">  Â Â Â Â <input type="hidden" name="method"   value="FindCustomer"> <input type="submit"  class="loggedinlabel" title="Find By Customer" value="Find Customer">
                    </form>
                    </td>
            <td  class="loggedinlabel"   >                  
                    <form  method="post" action="regionCustUserMap.do">
                     Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â <input type="text"  class="loggedin"  value="<%=finditem1%>" name="search1">  Â Â Â Â <input type="hidden" name="method"   value="Find"> <input type="submit"  class="loggedinlabel" title="Find By SalesID" value="Find SalesID">
                    </form>
                    </td>
            </tr></table>
            <table>
            <html:form action="regionCustUserMap.do">
                <tr>
                <td  class="loggedinlabel" >
                    <bean:message key="gloabl.asof" />
                </td>
                <td    class="loggedin" >
                    <%=(DateHandler.getDateInSpecifiedFormat(
                            new java.util.Date(),
                            MozartConstants.MOZART_DATE_FORMAT))%>
                </td>
                <td>Â </td><td>Â </td><td>Â </td>
                <td  class="loggedinlabel" >Select SalesRegion:</td>
                <td  class="loggedinlabel" >
                     <html:select  styleClass="loggedin"  onchange="filter_region()" styleId="regid" property="regid">
                     <html:option value="0">ALL</html:option>
                      <html:options collection="regions_list"  property="id"  labelProperty="name"  ></html:options>     
                      </html:select>
                    Â Â Â   
                </td>
                </tr>
        </html:form>
                </table>
                <%
            String divStyle = "style=\"overflow:auto;height:550;width:1030;\"";
                String tBodyStyle = "style=\"overflow:auto;overflow-x:hidden;\"";
                if ((MozartCostUtils.isFirefox(request))) {

                    divStyle = "style=\"overflow:auto;height:550;width:1030;\"";
                    tBodyStyle = "style=\"overflow:auto;overflow-x:hidden;height:200;\"";
                }
            %>
<hr size="1"  noshade>
<table    >
            <tr>
             <html:form   action="regionCustUserMapXl.do">
             <td>
                                <input alt="Press GO, Then click Export to Excel" name="CVS" class="loggedinlabel"
                                    type="image" value="Export Excel" src="images/xls.gif"
                                    onmouseover="Tip('Press Click Export to Excel')" />     
        </td>       
        <td      class="loggedinlabel"   >

        </td>
        </html:form>             
            </tr>
        </table> 
<html:form action="regionCustUserMap.do">
<div class="autoHeight" style="width:900px;height:1515px;margin-top:10px; margin-bottom:10px;">
<table   class="tablesorter" border="0"  > <%-- class="tablesorter" --%>
<thead class="ls">

        <th >Sales Region</th>
        <th >ROLES MAPPED AT REGION LEVEL (ALL EXCEPT SALES ID)</th>
        <th  >Customer</th>
        <th  >Country</th>
        <th  >Sales ID</th>

    </thead>

    <tbody class="ls1">
    <%ArrayList cust_list=(ArrayList)request.getAttribute("cust_list"); 
    for (int i = 0; i < cust_list.size(); i++) {
    MapCustomerForm mcf=(MapCustomerForm)cust_list.get(i);%>
    <TR class="<% if(i%2==0){%><%=""%><%}else{%><%="odd"%><%}%>">
                                <td width="148" nowrap="nowrap">
                                <%=mcf.getRegion()%>
                            </td>



                                <td width="408"  width="40">

                            <%=mcf.getUser_names() %>                   
                            </td>
                            <td width="188" nowrap="nowrap">
                                <%=mcf.getCustomer()%>
                            </td>
                            <td width="148" nowrap="nowrap">
                                <%=mcf.getLocation()%>
                            </td>
                            <td width="98" nowrap="nowrap">
                                <%=mcf.getSalesid()%>
                            </td>
    </tr>
    <%} %>
    </tbody>
</table></div>

        </html:form>
    </body>
</html>
 my action class code:
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 );  

    return new ResourceStreamInfo(contentType, servletCtx, fileName);  
    }  
}  
View Answers









Related Tutorials/Questions & Answers:

Ads