No, this is really simple as an action method.
Why make it any harder than this?
public void exportFileAction(String contentType, byte[] data,
String filename) throws IOException
{
FacesContext facesContext = FacesContext.getCurrentInstance();
OutputStream responseStream =
((HttpServletResponse)facesContext.getExternalContext().getResponse()).getOutputStream();
if (null == responseStream) throw new
AbortProcessingException("responseStream is null");
HttpServletResponse response =
(HttpServletResponse)facesContext.getExternalContext().getResponse();
response.setContentType(contentType);
response.setHeader("Content-Disposition","attachment;filename=\""
+ filename + "\"");
response.setContentLength(data.length);
responseStream.write(data);
response.flushBuffer();
facesContext.responseComplete();
}
public String exportFileWhenClicked()
{
try {
exportFileAction("text/plain", bean.getStringData().getBytes(),
"file.csv");
} catch (IOException e) {
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Write Error.", e.getLocalizedMessage()));
return null;
}
return "export file";
}
On 8/14/06, Eurig Jones <[EMAIL PROTECTED]> wrote:
I've now decided to go with a simple servlet because I think it's a
cleaner method to do it.
Thanks a lot for everyones help!
Ondřej Světlík wrote:
> Eurig Jones napsal(a):
>> I have a link on a facelets page which I want to users to be able to
>> click and download a text file (with it's own extension such as
>> .csv). The contents of this text file is simply the contents of a
>> String property in a jsf bean.
>>
>> I'm not sure how to go about doing the above, I'm not even sure if
>> it's possible using JSF. Any ideas?
>>
>> Regards,
>> Eurig
>>
>
> Hello,
>
> I have tried custom PhaseListener and Servlet. After many problems
> with the PhaseListener I had to use the Servlet solution. If you are
> still interested in PhaseListener solution, look at:
>
>
http://www.jroller.com/page/cagataycivici?entry=phaselistener_renders_an_image_no
>
>
> Regards,
>
> Ondrej
--
Fugro Robertson Limited Telephone: +44+ (0)1492 581811
Tyn-y-coed Site Fax: +44+ (0)1492 583416
Llanrhos
Llandudno
North Wales
UK LL30 1SA
General Email: [EMAIL PROTECTED]
World Wide Website: www.fugro-robertson.com
********************************************************************
* This email may contain confidential and privileged information *
* intended solely for the individual or organisation to whom it is *
* addressed. If the reader is not the intended addressee, or the *
* employee or agent responsible to deliver it to the addressee, *
* you are hereby notified that any dissemination, distribution or *
* copying is strictly prohibited. If you have received this email *
* in error, please notify the sender and either destroy the email *
* or return it to [EMAIL PROTECTED] *
* Please note this email is not intended to create legal relations.*
********************************************************************