Primefaces:从URL调用页面时不显示graphicImage(非

时间:2010-11-23 19:13:34

标签: jsf-2 primefaces

我遇到一些问题需要在某个场景中显示primefaces dyanmic图形图像,我试图在facelet页面上显示图像(从数据库中检索),并且页面由URL调用(不是H:commandLink)。它适用于通过h:commandButton处理请求的其他页面。但是,除了图像之外的所有数据都出现在以下场景中......

  1. fundraiseView.xml(facelet页面)   HTML         ...         p:graphicImage value =“#{fundraisePage.picture}”/         ...   / HTML

  2. FundraisePage(带请求参数的请求范围的支持bean)

    @ManagedBean
    @RequestScoped
    public class FundraisePage extends BackingBean {
    
    
      @EJB DataSBLocal dataSB;
      StreamedContent picture;
    
    
      @ManagedProperty(value="#{param.id}")
      private int id;
    
    
      @PostConstruct
      public void init() {
        this.fundRaiseEO = dataSB.getFundRaiseIndividual(id);
        InputStream inputStream = new ByteArrayInputStream(this.fundRaiseEO.getPicture());
        this.setPicture(new DefaultStreamedContent(inputStream, "image/jpeg"));
      }
    
  3. 当我通过http://...../faces/fundraiseView.xml?id=1调用页面时,页面返回显示id 1的所有数据,但不显示图片。我确定它与我如何调用页面有关(因为我在其他地方工作)但是我需要它是在JSF包装标记之外发起的请求。

  4. 非常感谢任何见解或建议。

    谢谢, 乔纳森

1 个答案:

答案 0 :(得分:1)

在另一个帖子中找到答案。

Loading a set of images with primefaces

我需要在p:graphicImage标记内使用标记f:parm name =“id”value =“#{fundraisePage.id}”,因此它接受id作为查找参数。同样将图像标记的值更改为属性中的此方法...

public StreamedContent getImage(){

     FundRaise fundRaiseEO = new FundRaise();
     fundRaiseEO = dataSB.getFundRaiseIndividual(id);
     return new DefaultStreamedContent(new ByteArrayInputStream(fundRaiseEO.getPicture()), "image/jpeg"); \\ or whatever your image mime type.

}