【发布时间】:2015-02-25 14:32:38
【问题描述】:
我的任务是在单击链接时在我的 JSF 应用程序中显示从数据库中提取的 PDF 作为弹出窗口。但是我的模态面板没有呈现 PDF。相反,我在面板的左上角看到一个小的深灰色框。
这是我的 XHTML 代码:
<rich:column styleClass="viewUserTable">
<f:facet name="header">
<h:outputText value="Pdf" />
</f:facet>
<h:outputLink value="#" id="link" style="color:blue;margin: 0 auto;">
Proof
<rich:componentControl for="panel" attachTo="link"
operation="show" event="onclick" />
</h:outputLink>
<rich:modalPanel id="panel" width="350" height="100">
<f:facet name="header">
<h:outputText value="PDF"></h:outputText>
</f:facet>
<a4j:mediaOutput element="object" mimeType="application/pdf"
id="media" session="false" createContent="#{getMyBean.showPdf}"
value="1" style="width:800px; height:600px;" cacheable="false"
standby="loading...">
</a4j:mediaOutput>
</rich:modalPanel>
这是我在 bean 中调用的为 <a4j:mediaOutput> 创建内容的方法。
public void showPdf(OutputStream stream, Object object) throws SQLException, IOException {
Blob proof= myObject.getPdf(someValue);//DB call to get the pdf
InputStream inStream = proof.getBinaryStream();
int length = -1;
byte[] buffer = new byte[4096];
while ((length = inStream.read(buffer)) != -1) {
stream.write(buffer, 0, length);
}
}
我不确定<a4j:mediaOutput> 中value 属性的重要性,但我在互联网上找到了一个示例,其中从数据库中获取了类似的内容,并且该值设置为1。我使用的是RichFaces 3.3 .
【问题讨论】:
标签: jsf pdf richfaces ajax4jsf