Thanks Bruno.
Now I do this.
_____________________________________________________________
HttpServletResponse response =
(HttpServletResponse)context.getExternalContext().getResponse();
response.setHeader ("Content-Disposition","attachment;filename=\"mae.csv\
"");
response.setContentType("text/csv");response.getOutputStream().write(sbExcel.toString().getBytes()); response.getOutputStream().flush(); response.getOutputStream().close(); *StateManager stateManager = (StateManager)context.getApplication().getStateManager(); stateManager.saveSerializedView(context);* FacesContext.getCurrentInstance().responseComplete(); _____________________________________________________________ But I get an error - see attached image (image.jpg). Thanks in advance. On 6/21/07, Mikael Andersson <[EMAIL PROTECTED]> wrote:
Thanks Bruno,
will try that.
PS.
Hope Cambridge is treating you well :)
On 21/06/07, Bruno Aranda < [EMAIL PROTECTED]> wrote:
>
> Hi,
>
> Before calling responseComplete(), that makes the lifecycle end, you
> may need to save the state of the view by using the StateManager,
>
> StateManager stateManager = (StateManager)
> faces.getApplication().getStateManager();
> stateManager.saveSerializedView(faces);
>
> Calling it you save the component state information, used to restore the
> view...
>
> Hope it helps,
>
> Bruno
>
> PS. Mikael :-)
>
> On 21/06/07, Mikael Andersson <[EMAIL PROTECTED]> wrote:
> > Hi
> >
> > I'm experiencing the same problem, and would also be interested in
> knowing
> > if there are any solutions which don't involve bringing in another
> > framework.
> >
> > If there isn't a solution, it would be great if someone could explain
> to me
> > the reason why this happens.
> > I think/guess it has something to do with the view state being build
> after
> > render response, and by calling responseComplete that phase isn't
> invoked.
> > Is that accurate?
> >
> > Cheers,
> > Mike
> >
> >
> > On 20/06/07, Tathagat <[EMAIL PROTECTED]> wrote:
> > >
> > > Hi all.
> > > In my JSF application I have a link (t:commandLink) on click of
> which I
> > want to send an attachment to the user. The usual way in struts was
> > >
> > > snippet:
> > > response.setHeader
> > ("Content-Disposition","attachment;filename=\"mae.csv\ "");
> > > response.setContentType("text/csv");
> > > response.getOutputStream().write(file.getBytes()); // file is some
> object
> > which return bytes
> > > response.getOutputStream ().flush();
> > > response.getOutputStream().close();
> > >
> > > When I do this in JSF, I also do in the end:
> > > FacesContext.getCurrentInstance().responseComplete();
> > >
> > > Works fine - But after I have the file, I try to do something else
> > (Another action), I get the error:View state couldn't be restored,
> reload?
> > >
> > > I guess it is because JSF loses the view (for some reason I don't
> know).
> > >
> > > What is the right way to send an attachment to user with PURE JSF
> > solution.
> > >
> > > I read in some places about using shale, servlets, etc.. But I want
> a pure
> > JSF solution. Help, anyone?
> > >
> > > Thanks in advance.
> > >
> > > Cheers.
> >
> >
>
<<attachment: image.jpg>>

