[jboss-user] [JBoss Seam] - Seam+JSF - File Download through HttpServletResponse problem
reinhard.behrens
do-not-reply at jboss.com
Wed Nov 22 03:10:54 EST 2006
Hi,
I reference my external context as per http://www.jboss.org/index.html?module=bb&op=viewtopic&t=94163
but it does not function the way I thought.
If I create the PDF argument for my action function from a DataModelSelection, then the action should prompt the user to either download or view the test pdf1.pdf when clicked.
The file reading and output works fine, just not to the ServletOutputStream. It returns "Success" without any errors or Exceptions on my JBoss
console output.
Am I missing something? Does the function return value have something to do with it, pageflow etc... ?
Any help would be appreciated.
The code :@Stateful
| @Name("downloadpdf")
| @Scope(ScopeType.SESSION)
| public class DownloadPDFAction implements DownloadPDF{
|
| @PersistenceContext(type=PersistenceContextType.EXTENDED)
| private EntityManager em;
|
| @In(value="#{facesContext.externalContext}")
| private ExternalContext extCtx;
|
| @In(required=false)
| private PDF pdf;
|
| public String download(PDF pdf)
| {
| String filePath = null;
| String fileName = null;
| int read = 0;
| byte[] bytes = new byte[1000];
|
| HttpServletResponse response = (HttpServletResponse)extCtx.getResponse();
| response.setContentType("application/pdf");
| response.addHeader("Content-disposition", "attachment; filename=\"" + fileName +"\"");
|
| filePath = "C:\\";
| fileName = "pdf1.pdf";
|
| try
| {
| ServletOutputStream os = response.getOutputStream();
| File file = new File(filePath,fileName);
| FileInputStream fis = new FileInputStream(file);
|
| while((read = fis.read(bytes)) != -1)
| {
| os.write(bytes,0,read);
| }
|
| os.flush();
| os.close();
|
| System.out.println("\nSuccess\n");
| }
| catch(Exception e)
| {
| System.out.println("\nFailure : " + e.toString() + "\n");
| }
|
| return "main";
| }
|
| @Destroy @Remove
| public void destroy(){}
| }
|
The JSF : <h:dataTable value="#{pdfs}" var="d_map" rendered="#{pdfs.rowCount > 0}">
| <h:column>
| <s:link value="Document : #{d_map.name}" action="#{downloadpdf.download(d_map)}"/><img width="16" height="17" src="img/acrobat.jpg" />
| </h:column>
| </h:dataTable>
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3987811#3987811
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3987811
More information about the jboss-user
mailing list