You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Mike Rooney <ok...@yahoo.com> on 2008/07/30 00:06:15 UTC
ServletOutputStream
I created a small webapp that extracts data from a DB, creates an Excel file from that data (using Apache POI), which then streams the file to the end user's browser. Everything is working fine, however I have to set the Action class' return type to 'NULL' since I am setting the servlet response type to 'application/vnd-ms-excel'. I want to change my application so that it returns to a 'status completed' page when the extraction is completed. However I cannot do this when I set the return type is null. How can I do this?
Here is my code...
public class ExtractAction extends ActionSupport {
public String execute() throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet prodSheet = wb.createSheet("PROD");
HSSFSheet devSheet = wb.createSheet("DEV");
HSSFSheet testSheet = wb.createSheet("TEST");
...
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/vnd.ms-excel");
ServletOutputStream outstream = response.getOutputStream();
wb.write(outstream);
outstream.flush();
response.flushBuffer();
}
return null;
//return SUCCESS
}
and my struts.xml
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<package name="default" extends="struts-default">
<action name="Extractor" class="action.ExtractAction">
<result name="success">/example/index.jsp</result>
</action>
</package>
</struts>
Re: ServletOutputStream
Posted by Gabriel Belingueres <be...@gmail.com>.
Your action can not generate two responses (if that's what you asking).
If you forward to a 'status completed' page, then you need to save
your excel data somewhere to not loosing it.
2008/7/29 Mike Rooney <ok...@yahoo.com>:
> I created a small webapp that extracts data from a DB, creates an Excel file from that data (using Apache POI), which then streams the file to the end user's browser. Everything is working fine, however I have to set the Action class' return type to 'NULL' since I am setting the servlet response type to 'application/vnd-ms-excel'. I want to change my application so that it returns to a 'status completed' page when the extraction is completed. However I cannot do this when I set the return type is null. How can I do this?
>
> Here is my code...
>
> public class ExtractAction extends ActionSupport {
> public String execute() throws Exception {
> HSSFWorkbook wb = new HSSFWorkbook();
> HSSFSheet prodSheet = wb.createSheet("PROD");
> HSSFSheet devSheet = wb.createSheet("DEV");
> HSSFSheet testSheet = wb.createSheet("TEST");
> ...
> HttpServletResponse response = ServletActionContext.getResponse();
> response.setContentType("application/vnd.ms-excel");
> ServletOutputStream outstream = response.getOutputStream();
> wb.write(outstream);
> outstream.flush();
> response.flushBuffer();
> }
> return null;
> //return SUCCESS
> }
>
> and my struts.xml
>
> <struts>
>
> <constant name="struts.enable.DynamicMethodInvocation" value="false" />
> <constant name="struts.devMode" value="false" />
>
> <package name="default" extends="struts-default">
> <action name="Extractor" class="action.ExtractAction">
> <result name="success">/example/index.jsp</result>
> </action>
> </package>
>
> </struts>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org