[prev in list] [next in list] [prev in thread] [next in thread] 

List:       myfaces-user
Subject:    RE: Re: [Tobago] Problem with PDF download and Ajax
From:       "H. Swaczinna" <swaczinna () wlp-systems ! de>
Date:       2007-02-27 21:29:15
Message-ID: 19371214.452231172611755017.JavaMail.servlet () kundenserver
[Download RAW message or body]

<head></head><body>Hi Madan,<br><br>here's a (stripped) example I use to generate \
print files within java code:<br><br>&nbsp;&nbsp;&nbsp; &lt;tc:button \
id="printButton" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
label="Print"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
immediate="true"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
transition="false"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
action="#{mainController.printAction}"/&gt;<br><br>&nbsp; public void printAction() \
{<br>&nbsp;&nbsp;&nbsp; String pathname = \
System.getProperty("java.io.tmpdir");<br>&nbsp;&nbsp;&nbsp; String filename = \
"test.pdf";<br>&nbsp;&nbsp;&nbsp; File pdfFile = new File(pathname, \
filename);<br>&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintStream \
out = new PrintStream(pdfFile);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Write the PDF \
content<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
out.println(...);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
out.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sendFile(pathname, filename, \
"application/pdf");<br>&nbsp;&nbsp;&nbsp; } catch (IOException x) \
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LOG.error("Can't create PDF file", \
x);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp; }<br><br>Regards<br>Helmut<br><br><br><table \
width="100%"><tbody><tr><td bgcolor="blue" width="5">&nbsp;</td><td><style \
type="text/css"></style><div><div>Hi Helmut,<br><br>As per ur code, u give the \
location of a PDF doc on the server.<br><br>Which when referred then that would be \
downloaded.<br><br>But what if a pdf doc is generated within a javacode, say with \
Jasper Reports.<br><br>How can i pass that pdf doc generated in runtime to the jsp \
page and display that ?<br><br>Thnx in \
Advance,<br><br>Regards,<br>Madan<br>&nbsp;<br><br><div>----- Original Message \
----<br>From: Bernd Bohmann &lt;bernd.bohmann@atanion.com&gt;<br>To: MyFaces \
Discussion &lt;users@myfaces.apache.org&gt;<br>Sent: Tuesday, 27 February, 2007 \
4:25:31 AM<br>Subject: Re: [Tobago] Problem with PDF download and \
Ajax<br><br><div>Hello  Helmut,<br><br>just solved see:<br><br><a \
href="http://issues.apache.org/jira/browse/TOBAGO-303">http://issues.apache.org/jira/browse/TOBAGO-303</a><br><br>Should \
be available with the next nightly build<br><br>Regards<br><br><br>Bernd<br><br>H. \
Swaczinna wrote:<br>&gt; Hi,<br>&gt; <br>&gt; I've a page with a link to download a \
PDF file. The PDF download itself<br>&gt; works without a problem. But after a \
download Ajax requests don't work<br>&gt; anymore, for example a popup or a tabGroup \
with reloadTab.<br>&gt; <br>&gt; Here's a small testcase for this behavior.<br>&gt; \
<br>&gt; The page:<br>&gt; <br>&gt; &lt;%@ taglib uri="<a \
href="http://myfaces.apache.org/tobago/component%22">http://myfaces.apache.org/tobago/component"</a>; \
prefix="tc" <br>&gt; %&gt;&lt;%@ taglib uri="<a \
href="http://java.sun.com/jsf/core%22">http://java.sun.com/jsf/core"</a>; prefix="f" \
<br>&gt; %&gt;&lt;%@ page contentType="text/html;charset=UTF-8"  language="java" \
<br>&gt; %&gt;&lt;%@ page pageEncoding="UTF-8" <br>&gt; \
%&gt;&lt;f:view<br>&gt;&nbsp;&nbsp;&gt;&lt;tc:page id="testPage" width="300px" \
height="200px"&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;tc:panel&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;f:facet \
name="layout"&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;tc:gridLayout cellspacing="0" \
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
rows="fixed;fixed"/&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;/f:facet&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tc:link \
id="pdfLink"<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
label="PDF"<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
immediate="true"<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
transition="false"<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  \
actionListener="#{anlagenController.showPDFActionListener}"&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;f:attribute name="file" \
value="test1.pdf"/&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;/tc:link&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tc:link \
id="ajaxLink"<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
label="Ajax"&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;tc:attribute name="renderedPartially" \
value="testPopup"/&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;f:facet name="popup"&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;tc:popup id="testPopup" width="300" \
height="200"&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;tc:button id="closeButton" \
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  label="Close"&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;tc:attribute name="popupClose" \
value="immediate"/&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;/tc:button&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;/tc:popup&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;/f:facet&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;/tc:link&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; \
&lt;/tc:panel&gt;<br>&gt;&nbsp;&nbsp; &lt;/tc:page&gt;<br>&gt; \
&lt;/f:view&gt;<br>&gt; <br>&gt; The java code for the PDF download:<br>&gt; \
<br>&gt;&nbsp;&nbsp; public void showPDFActionListener(ActionEvent e) \
{<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; String filename = \
(String)e.getComponent().getAttributes().get("file");<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; \
sendFile(attachmentPath, filename, "application/pdf");<br>&gt;&nbsp;&nbsp; }<br>&gt; \
<br>&gt;&nbsp;&nbsp; protected void  sendFile(String filepath, String filename, \
String mimeType) {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; File file = new File(filepath, \
filename);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; if (file.exists() &amp;&amp; \
file.isFile()) {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try \
{<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputStream in = new \
FileInputStream(file);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
FacesContext facesContext = \
FacesContext.getCurrentInstance();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
HttpServletResponse response = \
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
(HttpServletResponse)facesContext.getExternalContext().getResponse();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
response.setContentType(mimeType);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
response.setContentLength(in.available());<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  response.setHeader("Content-disposition", \
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " \
attachment;filename=\"" + filename + \
"\"");<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletOutputStream \
out = response.getOutputStream();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
byte[] buffer = new byte[0x10000];<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
while (in.read(buffer) &gt; 0) \
{<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
out.write(buffer);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
}<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
in.close();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
out.close();&nbsp;&nbsp;&nbsp;&nbsp;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
StateManager stateManager = \
(StateManager)facesContext.getApplication().getStateManager();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  stateManager.saveSerializedView(facesContext);&nbsp;&nbsp;&nbsp;&nbsp; \
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
facesContext.responseComplete();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch \
(Exception x) {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
getLog().error("Error writing output", \
x);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; } \
else {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getLog().error("File " + \
file.getAbsolutePath() + " not found");<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; \
}<br>&gt;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;<br>&gt; I think there's a problem with \
Ajax when a page submit has no result.<br>&gt; <br>&gt; Regards<br>&gt; \
Helmut<br>&gt; <br></div></div><br></div></div><br>  

	
		<hr size="1"> 
Here's a new way to find what you're looking for - <a \
href="http://us.rd.yahoo.com/mail/in/yanswers/*http://in.answers.yahoo.com/">Yahoo! \
Answers</a> </td></tr></tbody></table></body>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic