0

我正在尝试显示一张可以存储在内存中的一个文件夹中的图像,首先我正在尝试显示文件夹中的内容...

dialog我用 a调用 acommandbutton并且在里面dialog有一个graphicImage

但它没有显示图像。

那么怎么了?

<p:dialog header="#{lbl['LABEL.ATENDENTE.IMAGEMCERTIFICADO']}" widgetVar="dlgViewCpfImagem" modal="true" resizable="false" closable="false" dynamic="true">
   <h:form id="formDlgViewCpfImagem" enctype="multipart/form-data">
     <p:messages id="messageDlgViewCpfImagem" showDetail="true"/>
    <p:panelGrid styleClass="noBorders panelGridCenter gridNoBackground">
      <p:row>
            <p:column>
        <p:graphicImage value="#{atendenteBean.fileCpf.getAbsolutePath()}"/>
        </p:column>
     </p:row>
    </p:panelGrid>
  </h:form>
  <center>
  <p:commandButton process="@this" value="#{lbl['BOTAO.FECHAR']}" oncomplete="dlgViewCpfImagem.hide()" update=":form:panelAnexarArquivo"/>
  </center>
</p:dialog>


<p:column rendered="#{not empty atendenteBean.pojo.imgCpf}">
     <p:commandButton process="@this" icon="botaoLog" styleClass="botaoImagem" oncomplete="dlgViewCpfImagem.show()"/>
</p:column>
4

1 回答 1

0

看来您正试图显示一个文件指向它在文件系统中的存储位置。除非您使用Dynamic Image Streaming否则这将不起作用。请参见下面的示例:

托管豆

import java.io.File;
import java.io.InputStream;
import javax.faces.bean.SessionScoped;
import org.apache.commons.io.FileUtils;

import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

@ManagedBean
@SessionScoped
public class DynamicImageController {

    private StreamedContent graphicImage;

    public DynamicImageController() {
        try {
            //The image file you want to show
            File file = new File("d:\\image.png");
            InputStream is = FileUtils.openInputStream(file);
            graphicImage = new DefaultStreamedContent(is, "image/png");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public StreamedContent getGraphicImage() {
        return graphicImage;
    }

}

PS:我使用会话范围的 bean,因为我希望它简单。您应该考虑一种更复杂的机制,以避免在会话中存储太多数据。请记住,图像标记使用不同的 http 连接,而 ViewScoped bean 可能不是一个好的选择。

风景

<p:graphicImage value="#{dynamicImageController.graphicImage}" />
于 2013-10-17T19:45:50.367 回答