Project Documentation

Summary

Tag name: <tr:fileDownloadActionListener>

The fileDownloadActionListener tag is a declarative way to allow an action source (<commandButton>, <commandLink>, etc.) to programatically send the contents of a file to the user, optionally with a specific content type and filename.

Example:

This example sends a simple "Hello there!" file to the user.

            <h:commandButton value="Say Hello">
              <tr:fileDownloadActionListener filename="hello.txt"
                                        contentType="text/plain; charset=utf-8"
                                        method="#{bean.sayHello}"/>
            </h:commandButton>
    public void sayHello(FacesContext context, OutputStream out) throws IOException
    {
      OutputStreamWriter w = new OutputStreamWriter(out, "UTF-8");
      w.write("Hi there!");
      // The stream is automatically closed, but since we wrapped it,
      // we'd better flush our writer
      w.flush();
    }

Attributes

Name Type Supports EL? Description
contentTypeObjectYes the MIME type of the file, for example text/plain, text/csv, application/pdf, etc.
filenameObjectYes the proposed filename for the object. When set, a "Save File" dialog will typically be displayed, though this is ultimately up to the browser. If not set, the content will typically be displayed inline in the browser if possible.
methodObjectOnly EL the method that will be used to download the file contents. The method takes two arguments, a FacesContext and an OutputStream. The OutputStream will be automatically closed, so the sole responsibility of this method is to write all bytes to the OutputStream.