IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

[MyFaces] Afficher une image stockée en DB


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut [MyFaces] Afficher une image stockée en DB
    Bonjour,

    J'utilise MyFaces et JPA. J'ai des photos stockées dans un DB et je retire ces infos grâce à JPA. J'ai donc un bean avec un champ byte[] qui contient la photo.

    Je voudrais afficher cette photo dans une page HTML mais je ne vois pas comment faire. J'ai découvert <s:graphicImageDynamic> mais je ne comprend pas le fonctionnement.

    Peut-être que je dois créer une servlet mais je ne sais pas comment m'y prendre pour la définir.

    Pourriez-vous m'aider ?

    Merci

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    Personellement, je passes par le composant <a4j:mediaOutput>.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut
    Et je peut utiliser ça avec myfaces ?

    Merci pour la réponse

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Tout à fait, c'est un jeu de composants (ajax4jsf/Richfaces), qui peut fonctionner avec Sun JSF RI ou MyFaces

    http://labs.jboss.com/file-access/de...uirements.html

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut
    Voilà, j'ai mis en place ajax4jsf (avec RichFaces). Après avoir pris mon temps pour ne plus avoir d'erreur, je me retrouve sur un dernier problème (mais de taille) :

    L'image ne s'affiche pas alors que lorsque je regarde la source, je vois les data.

    Peut-être dois-je ajouter quelque chose dans le web.xml pour les images ?

    Dans ma jsp:
    <a4j:mediaOutput element="img" cacheable="false" session="true"
    createContent="#{vCardController.paint}" value="#{card.photo}"
    mimeType="image/jpeg" />
    dans mon controller :
    public void paint(OutputStream out, Object data) throws IOException {

    if (data != null && data instanceof byte[]) {
    byte[] paintData = (byte[]) data;
    BufferedImage img = new BufferedImage(25, 25, BufferedImage.TYPE_INT_RGB);
    Graphics2D graphics2D = img.createGraphics();
    graphics2D.drawBytes(paintData, 0, paintData.length, 0, 0);
    ImageIO.write(img, "jpeg", out);
    }
    }
    L'image est stockée sous forme de blob (que je récupère dans un POJO JPA.

    Une idée ?

    Merci pour le coup de main.

  6. #6
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    Normalement, le problème est signalé dans le log de ton application, et ça nous aiderait énormément si tu l'avais posté

    A defaut de ça, je vais essayer de deviner ...
    A vue de nez, ça vient du fait que tu passes le blob dans l'attribut value, or, ajax4jsf va encoder ce value dans l'URL ça va pas le faire, l'URL est limité en longueur, est ton blob passera pas.

    La solution serait de passer plutôt un autre champ plus petit en taille et qui permet de retrouver le blob en question .... wait for it ... le candidat idéal est bien sûr l'identifiant de l'image dans la base de données

    Donc, tu passes plutôt l'id dans value (value="#{card.id}"), et dans ta méthode pain, tu castes data vers Long (ou ton type d'id), tu retrouves le blob de la base de donnés, et le reste tu l'as déjà fait.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Afficher une image stocké en base données
    Par Blo0d4x3 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 19/06/2006, 17h02
  2. [MySQL] Afficher une image stockée dans une base de données
    Par LuckySoft dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2006, 12h57
  3. Afficher une image stockée en memoire
    Par romeo9423 dans le forum MFC
    Réponses: 5
    Dernier message: 29/07/2005, 23h00
  4. [Forms] Afficher une image stockée en base
    Par oramine dans le forum Forms
    Réponses: 12
    Dernier message: 01/02/2005, 14h14
  5. Afficher une image stockée dans interbase
    Par NicolasR dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/06/2004, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo