2010-11-23 7 views
0

Ich habe Probleme mit der grafischen Anzeige des Hauptbildes für ein bestimmtes Szenario, in dem ich ein Bild auf einem Facelet anzeigen möchte Seite (aus einer Datenbank abgerufen) und die Seite wird von einer URL aufgerufen (nicht h: commandLink). Es funktioniert auf anderen Seiten mit Anforderungen, die über h: commandButton verarbeitet werden. Jedoch werden alle Daten, aber das Bild erscheint für das folgende Szenario ...Primefaces: graphicImage wird nicht angezeigt, wenn Seite von URL aufgerufen wird (nicht <h: commandLink)

  1. fundraiseView.xml (Facelet Seite) html ... p: graphicImage value = "# {fundraisePage.picture}"/ ... /html

  2. FundraisePage (Anfrage Anfrage param scoped Backing 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. Als ich Rufen Sie die Seite über http://...../faces/fundraiseView.xml?id=1 auf, die Seite zeigt alle Daten für ID 1 an, ohne jedoch das Bild anzuzeigen. Ich bin mir sicher, dass es damit zu tun hat, wie ich die Seite anrufe (da ich es sonst wo arbeiten lasse), aber ich brauche es als eine Anfrage, die außerhalb eines JSF-Wrapped-Tags initiiert wird.

Alle Einsichten oder Vorschläge sehr geschätzt.

Danke, Johnathan

Antwort

1

die Antwort in einem anderen Thread gefunden.

Loading a set of images with primefaces

Ich brauchte Tag f zu verwenden: Parm = "id" name value = "# {fundraisePage.id}" innerhalb der p: graphicImage Tag, so dass es die ID als Lookup-param akzeptiert. Neben den Wert auf Tag-Bild dieser Methode in Eigenschaft ändern ...

öffentliche 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. 

}