Olá, estou com problema para exibir documentos pdf´s, utilizo a marcação <p:media> para visualização, mais na hora de renderizar esta dando erro. Será que alguem pode me ajudar. O meu bean e meu xhtml são esse:
package br.com.hana.pgl.bean;
import java.io.ByteArrayInputStream;
import java.io.Serializable;
import java.util.ArrayList;
import javax.annotation.PostConstruct;
import javax.el.ExpressionFactory;
import javax.el.MethodExpression;
import javax.faces.FacesException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.MethodExpressionActionListener;
import javax.inject.Named;
import org.primefaces.component.menuitem.MenuItem;
import org.primefaces.component.submenu.Submenu;
import org.primefaces.model.DefaultMenuModel;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.MenuModel;
import br.com.hana.model.Document;
import br.com.hana.pgl.dao.DocumentDAO;
@ManagedBean(name="documentosBean")
@Named
@SessionScoped
public class DocumentosBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = -82329838599882278L;
/**
*
*/
private ArrayList<Document> csis;
private String requerimento;
private DefaultStreamedContent csi;
private DefaultStreamedContent nf;
private boolean flag;
private int index;
@PostConstruct
public void init() {
System.out.println(" Bean executado! ");
flag = false;
index = 0;
requerimento = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("req");
}
public ArrayList<Document> getCsis() {
return csis;
}
public void setCsis(ArrayList<Document> csis) {
this.csis = csis;
}
public void getDocumentNf() {
String reqAux = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("req");
if (reqAux != null && requerimento != null
&& !reqAux.equals(requerimento)) {
requerimento = reqAux;
index = 0;
}
System.out.println("Requrimento" + requerimento);
if (requerimento == null)
requerimento = FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap().get("req");
// System.out.println("ProcessosBean.getDocumentNf() " + requerimento);
if (requerimento != null) {
ArrayList<Document> pdf = new DocumentDAO().getNF(requerimento);
if (pdf.size() > 0) {
try {
System.out.println("ProcessosBean.getDocumentNf()");
this.nf = new DefaultStreamedContent(
new ByteArrayInputStream(pdf.get(0).getDocument()),
"application/pdf");
} catch (Exception e) {
throw new FacesException(e);
}
}
}
}
public void getDocumentCsi() {
String reqAux = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("req");
if (reqAux != null && requerimento != null
&& !reqAux.equals(requerimento)) {
requerimento = reqAux;
index = 0;
}
if (requerimento == null)
requerimento = FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap().get("req");
if (requerimento != null) {
ArrayList<Document> pdf = new DocumentDAO().getCSI(requerimento);
this.csis = pdf;
createMenu();
if (pdf.size() > 0) {
try {
System.out.println("ProcessosBean.getDocumentCsi() index:"
+ index);
this.csi = new DefaultStreamedContent(
new ByteArrayInputStream(pdf.get(index)
.getDocument()), "application/pdf");
} catch (Exception e) {
throw new FacesException(e);
}
}
}
}
public void getDocumentNf(String req) {
System.out.println("ProcessosBean.getDocumentNf() " + req);
if (req != null) {
ArrayList<Document> pdf = new DocumentDAO().getNF(req);
if (pdf.size() > 0) {
try {
System.out.println("ProcessosBean.getDocumentNf()");
this.nf = new DefaultStreamedContent(
new ByteArrayInputStream(pdf.get(0).getDocument()),
"application/pdf");
} catch (Exception e) {
throw new FacesException(e);
}
}
}
}
public void getDocumentCsi(String req) {
if (req != null) {
ArrayList<Document> pdf = new DocumentDAO().getCSI(req);
this.csis = pdf;
createMenu();
if (pdf.size() > 0) {
try {
System.out.println("ProcessosBean.getDocumentCsi() ind:"
+ index);
this.csi = new DefaultStreamedContent(
new ByteArrayInputStream(pdf.get(index)
.getDocument()), "application/pdf");
} catch (Exception e) {
throw new FacesException(e);
}
}
}
}
public void changeDocumentCsi(ActionEvent event) {
MenuItem selectedMenuItem = (MenuItem) event.getComponent();
flag = true;
String val = (String) selectedMenuItem.getValue();
index = Integer.parseInt(val.split(" ")[1].replaceAll(":", "").trim());
System.out.println("ChangeDocument" + requerimento + "tam docs");
index--;
if (index < csis.size()) {
csi = new DefaultStreamedContent(new ByteArrayInputStream(csis.get(
index).getDocument()), "application/pdf");
}
}
private MenuModel model;
public MenuModel getModel() {
return model;
}
public void setModel(MenuModel model) {
this.model = model;
}
public void createMenu() {
model = new DefaultMenuModel();
Submenu submenu = new Submenu();
submenu.setLabel("Documentos");
int aux;
for (int i = 0; i < this.csis.size(); i++) {
aux = i + 1;
MenuItem item = new MenuItem();
item.setValue("CSI " + aux + ": " + csis.get(i).getId());
item.addActionListener(createActionListener("#{documentosBean.changeDocumentCsi}"));
item.setUpdate("form");
submenu.getChildren().add(item);
}
model.addSubmenu(submenu);
}
public DefaultStreamedContent getCsi() {
//if (!flag)
getDocumentCsi();
// System.out.println(" getNF! " + nf.toString());
flag = false;
// System.out.println(" getCSI! " + csis.size());
return csi;
}
public void setCsi(DefaultStreamedContent csi) {
this.csi = csi;
}
public DefaultStreamedContent getNf() {
//if (!flag)
getDocumentNf();
// System.out.printflag = false;
return nf;
}
public void setNf(DefaultStreamedContent nf) {
this.nf = nf;
}
public MethodExpression createMethodExpression(String action,
Class<?> valueType, Class<?>[] expectedParamTypes) {
MethodExpression methodExpression = null;
try {
ExpressionFactory factory = FacesContext.getCurrentInstance()
.getApplication().getExpressionFactory();
methodExpression = factory.createMethodExpression(FacesContext
.getCurrentInstance().getELContext(), action, valueType,
expectedParamTypes);
} catch (Exception ex) {
ex.printStackTrace();
}
return methodExpression;
}
public MethodExpressionActionListener createActionListener(
String actionListener) {
Class[] args = new Class[] { ActionEvent.class };
return new MethodExpressionActionListener(this.createMethodExpression(
actionListener, Void.TYPE, args));
}
public void test() {
getDocumentCsi(this.requerimento);
getDocumentNf(this.requerimento);
System.out.println("teste " + this.requerimento);
}
public String getRequerimento() {
return requerimento;
}
public void setRequerimento(String requerimento) {
this.requerimento = requerimento;
}
}
o meu Xhtml é esse:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Visualização de Documentos</title>
<style>
.top {
vertical-align: top;
}
td {
vertical-align: top;
}
</style>
</h:head>
<h:body>
<p:ajaxStatus style="width:16px;height:16px;">
<f:facet name="start">
<h:graphicImage value="/image/ajax-loader.gif" />
</f:facet>
<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>
<h:form id="form">
<h:panelGrid id="display" columns="3" cellpadding="4" style="margin:0 auto; ">
<p:column>
<p:media id="panelNf" value="#{documentosBean.nf}" player="pdf"
width="550px" height="700px" ajax="false" />
</p:column>
<p:column>
<p:media id="panelCsi" value="#{documentosBean.csi}" player="pdf"
width="550px" height="700px" ajax="false" />
</p:column>
<p:column filterPosition="top" style="vertical-align:top;">
<p:menu model="#{documentosBean.model}" ajax="false"
style="vertical-align:top; width:195px" />
</p:column>
</h:panelGrid>
</h:form>
</h:body>
</html>
Este é o erro que está sendo disparado:
Jan 28, 2013 4:57:10 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
Grave: Error Rendering View[/fiscal/ProcessoView.xhtml]
java.lang.IllegalArgumentException: pdf is not a valid media player type
at org.primefaces.component.media.player.MediaPlayerFactory.getPlayer(MediaPlayerFactory.java:52)
at org.primefaces.component.media.MediaRenderer.resolvePlayer(MediaRenderer.java:119)
at org.primefaces.component.media.MediaRenderer.encodeEnd(MediaRenderer.java:41)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:309)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:437)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Jan 28, 2013 4:57:10 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/PGLweb] threw exception [pdf is not a valid media player type] with root cause
java.lang.IllegalArgumentException: pdf is not a valid media player type
at org.primefaces.component.media.player.MediaPlayerFactory.getPlayer(MediaPlayerFactory.java:52)
at org.primefaces.component.media.MediaRenderer.resolvePlayer(MediaRenderer.java:119)
at org.primefaces.component.media.MediaRenderer.encodeEnd(MediaRenderer.java:41)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:309)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:437)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Eu já adicionei este trecho no web.xml
pdf
application/pdf
Já faz um tempinho que eu estou neste erro, se alguém poder me ajudar ficarei grato.