passthrough jsf jsf-2 primefaces media dynamic-content

jsf - passthrough - ¿Cómo vincular el contenido dinámico usando<p: media>?



jsf passthrough (1)

Al igual que en <p:graphicImage> , el atributo de value puede apuntar a una propiedad de bean que devuelve StreamedContent . Esto solo requiere un método getter especial por las razones que se explican en detalle en la siguiente respuesta sobre el uso de <p:graphicImage> con un recurso dinámico de una base de datos: Visualice la imagen dinámica de la base de datos con p: graphicImage y StreamedContent .

En tu ejemplo particular, se vería así:

<p:media value="#{mediaManager.stream}" width="100%" height="300px" player="pdf"> <f:param name="id" value="#{bean.mediaId}" /> </p:media>

Con

@ManagedBean @ApplicationScoped public class MediaManager { @EJB private MediaService service; public StreamedContent getStream() throws IOException { FacesContext context = FacesContext.getCurrentInstance(); if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) { // So, we''re rendering the HTML. Return a stub StreamedContent so that it will generate right URL. return new DefaultStreamedContent(); } else { // So, browser is requesting the media. Return a real StreamedContent with the media bytes. String id = context.getExternalContext().getRequestParameterMap().get("id"); Media media = service.find(Long.valueOf(id)); return new DefaultStreamedContent(new ByteArrayInputStream(media.getBytes())); } } }

Uso <p:media> para mostrar contenido PDF estático.

<p:media value="/resource/test.pdf" width="100%" height="300px" player="pdf"> </p:media>

¿Cómo puedo cambiarlo para mostrar contenido dinámico?