2010-11-23 25 views
0

Je rencontre des problèmes pour afficher l'image graphique dièses primefaces pour un certain scénario où j'essaie d'afficher une image sur un facelet page (récupérée d'une base de données) et la page est invoquée par une URL (pas h: commandLink). Cela fonctionne sur d'autres pages avec des requêtes traitées via h: commandButton. Cependant, toutes les données, mais l'image apparaît pour le scénario suivant ...Primefaces: graphicImage ne pas afficher lors de l'invocation d'une page depuis l'URL (non <h: commandLink)

  1. fundraiseView.xml (page de Facelet) html ... p: valeur graphicImage = "# {fundraisePage.picture}"/ .../html

  2. FundraisePage (demande scope support haricot avec demande param)

    @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. Lorsque I invoquer la page via http://...../faces/fundraiseView.xml?id=1 la page renvoie l'affichage de toutes les données pour l'ID 1 mais sans afficher l'image. Je suis sûr que cela a à voir avec la façon dont j'appelle la page (puisque je l'ai déjà travaillé ailleurs), mais j'ai besoin que ce soit une requête initiée en dehors d'un tag enveloppé JSF.

Toute idée ou suggestion très appréciée.

Merci, Johnathan

Répondre

1

trouvé la réponse dans un autre thread.

Loading a set of images with primefaces

je devais utiliser la balise f: nom parm = valeur "id" = "# {} fundraisePage.id" dans le p: tag graphicImage il accepte l'identifiant comme param de recherche. En plus de modifier la valeur sur l'étiquette d'image à cette méthode dans la propriété ...

publique 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. 

}