我遇到一些问题需要在某个场景中显示primefaces dyanmic图形图像,我试图在facelet页面上显示图像(从数据库中检索),并且页面由URL调用(不是H:commandLink)。它适用于通过h:commandButton处理请求的其他页面。但是,除了图像之外的所有数据都出现在以下场景中......
fundraiseView.xml(facelet页面) HTML ... p:graphicImage value =“#{fundraisePage.picture}”/ ... / HTML
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"));
}
当我通过http://...../faces/fundraiseView.xml?id=1调用页面时,页面返回显示id 1的所有数据,但不显示图片。我确定它与我如何调用页面有关(因为我在其他地方工作)但是我需要它是在JSF包装标记之外发起的请求。
非常感谢任何见解或建议。
谢谢, 乔纳森
答案 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.
}