[英]How to load an image from a directory using graphicImage in Primefaces?
嗨,社區,我在從本地目錄加載圖像時遇到問題。 我依賴於從本地路徑下載文件,但在這種情況下,圖像顯示在本地目錄中。 項目上下文之外: C:\\\\image\\\\fancoil-pared.ice.png
<p:graphicImage value="#{cMantConsultaProductosList.graphicImage}" />
管理:
@ManagedBean
@ViewScoped
public class CMantConsultaProductosList {
private StreamedContent graphicImage;
@PostConstruct
@Override
public void setViewAtributes() {
InputStream stream = new FileInputStream(new File("C:\\imagen\\fancoil-pared.ice.png"));
this.graphicImage = new DefaultStreamedContent(stream, "image/png", "fancoil-pared.ice.png");
}
/**
* @return the graphicImage
*/
public StreamedContent getGraphicImage() {
return graphicImage;
}
/**
* @param graphicImage the graphicImage to set
*/
public void setGraphicImage(StreamedContent graphicImage) {
this.graphicImage = graphicImage;
}
}
錯誤控制台:
org.primefaces.application.resource.StreamedContentHandler handle
Grave: Error in streaming dynamic resource. null
org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() para servlet Faces_Servlet lanzó excepción
java.io.IOException: java.lang.NullPointerException
at org.primefaces.application.resource.StreamedContentHandler.handle(StreamedContentHandler.java:78)
at org.primefaces.application.resource.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:72)
at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:643)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:72)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
希望你能幫我解決這個問題,謝謝。
嘗試這個:
public StreamedContent getGraphicImage() {
return new org.primefaces.model.DefaultStreamedContent(
new java.io.FileInputStream("C:\\imagen\\fancoil-pared.ice.png"),
"image/png",
"fancoil-pared.ice.png"
);
}
正如 Oleg Tandrashko 在PF 論壇中所寫
不支持 ViewScoped bean - 內容將通過獨立於當前視圖的自己的請求接收。
謝謝朋友,我找到了解決方案,如果確實必須將負載分離到另一個管理器中,我會將我的代碼分享給社區。
@ManagedBean
public class CGraficoImagen {
public StreamedContent graphicImage;
public StreamedContent getGraphicImage() throws FileNotFoundException {
CMantConsultaProductosList rn = getCMantConsultaProductosList();
MProductoBean mantForm = (MProductoBean) rn.getFormMantenimiento();
StringBuilder archivoImagen = new StringBuilder();
archivoImagen.append(ReadParameterProperties.getRutaDirectorioImagen());
archivoImagen.append(mantForm.getVnomImagen());
return new DefaultStreamedContent(new FileInputStream(archivoImagen.toString()),
Constantes.MIME_IMAGE_PNG,
mantForm.getVnomImagen());
}
public void setGraphicImage(StreamedContent graphicImage) {
this.graphicImage = graphicImage;
}
private CMantConsultaProductosList getCMantConsultaProductosList() {
FacesContext ctx = FacesContext.getCurrentInstance();
return (CMantConsultaProductosList)ctx.getViewRoot().getViewMap().get("cMantConsultaProductosList");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.