0

好的,这个小问题让我发疯了,我得到了这个渲染条件来在数据表中显示图像而不是文本,我有一种从文件中获取流内容的方法。

由于某种原因我不知道,该方法被bean调用了两次,我将变量imageName传递给第一次获取流式内容的方法是可以的,因为输入了if,但是第二次变量变为“”我没有得到图像。我知道这是因为第二次输入 else 语句并显示了 missing.png 图像......

我正在使用运行 mojarra 2.1.9 和 primefaces 3.5 的 GlassFish 3.1.2

XHTML:

<p:column headerText="Respuesta">
                        <p:graphicImage width="200" height="200" value="#{viewFormResponseController.getImageFromPath(viewFormResponse.itemResponse)}" rendered="#{viewFormResponse.itemType == 'FIRMA'}"></p:graphicImage>
                        <h:outputText value="#{viewFormResponse.itemResponse}"></h:outputText>
                    </p:column>

豆方法

public StreamedContent getImageFromPath(String imageName) throws FileNotFoundException{
    System.out.println("image from path");
    String pathNoImage = "C:\\DataTraceServer\\missing.png";
        if(imageName != null && viewFormResponses != null && !imageName.equals("")){
    System.out.println(imageName);
    Device device;
    try {
        device = selectedFormResponse.getDevice();
        String path = "C:\\DataTraceServer\\"+selectedUser.getUsername()+"\\"+device.getImei()+"\\multimediaFile\\"+imageName;
        System.out.println(path);
        String contentType = FacesContext.getCurrentInstance().getExternalContext().getMimeType(path);
        return new DefaultStreamedContent(new FileInputStream(path), contentType);
        } catch (FileNotFoundException ex) {
            System.out.println("exception");
            Logger.getLogger(ViewFormResponseController.class.getName()).log(Level.SEVERE, null, ex);
            String contentType = FacesContext.getCurrentInstance().getExternalContext().getMimeType(pathNoImage);
            return new DefaultStreamedContent(new FileInputStream(pathNoImage), contentType);
        }
        } else {
            System.out.println("else");
            String contentType = FacesContext.getCurrentInstance().getExternalContext().getMimeType(pathNoImage);
            return new DefaultStreamedContent(new FileInputStream(pathNoImage), contentType);
        }

    }

我已经在 Stackoverflow 中阅读了一些类似的问题,但它们并不清楚,而且它们看起来不像我的问题,所以请帮助我已经研究了几个小时......

4

0 回答 0