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

Struts 1 Java Discussion :

[Struts-Layout] layout:collection - afficher des images


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut [Struts-Layout] layout:collection - afficher des images
    Bonjour tous le monde,

    voila mon probleme c que je veux afficher des images qui ce trouve dans un répertoir "c:/tmp/" a partir de leur nom qui sont charger a partir de la bdd et qui sont afficher dans <layout:collection>

    voici mon exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <layout:pager maxPageItems="6" align="center" > 
     
    <layout:collection name="ProduitsResult" id="ProduitsForm" styleClass="listeGab1" styleClass2="listeGab2" width="90%" align="center"> 
    <layout:collectionItem property="id" title="Produits.id.lbl" sortable="true" ></layout:collectionItem> 
    <layout:collectionItem property="nom" title="Produits.nom.lbl" sortable="true"></layout:collectionItem> 
    <layout:collectionItem property="picture" title="Produits.picture.lbl"></layout:collectionItem> 
    <layout:collectionItem property="prix" title="Produits.prix.lbl" sortable="true" ></layout:collectionItem> 
    <layout:collectionItem property="quantite" title="Produits.quantite.lbl" sortable="true"></layout:collectionItem> 
    <layout:collectionItem property="type_id" title="Produits.typde_id.lbl" sortable="true"></layout:collectionItem> 
     
    </layout:pager>
    alors au lieu d'avoir le nom au:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:collectionItem property="picture" title="Produits.picture.lbl"></layout:collectionItem>
    je veux charger l'image a partir de son nom récuperer de la bdd du repertoir "c:/tmp/" dan la meme collection bien sur.

    merci

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <layout:collectionItem title="Produits.picture.lbl">
       <layout:img src="c:\temp\${ProduitsForm.picture}"/>
    </layout:collectionItem>
    Tu devrais plutôt mettre les images dans ton projet, dans un répertoire images par exemple, et modifier la valeur de l'attribut src comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:img src="images/${ProduitsForm.picture}"/>

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    ca ne marche pas ${ProduitsForm.picture} ne le reconnu pas

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Si l'image est contenue dans une base de données, c'est totalement inutile de passer par un répertoire temporaire sur disque, on utilise un filtre pour traiter ça.
    Typiquement, la page contient une balise image standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <img src="/virtual/image/monImage.gif" ... />
    et le filtre est paramétré pour traiter les url de la forme "/virtual/image/*" (au niveau de l'attribut <url-pattern>)
    Ensuite, tu lis la DB et tu renvoies le flux dans la réponse et le tour est joué

    A+

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Merci pour votre aide, mais dans un autre interface j"uploade les images et je les envoie dans un répertoir "c:\\tmp\" et prendre juste leur nom et l'enregistrer dans la bdd, par exemple "photo.png". je n'enregistre ni flux ni chemin.


  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par moutambo Voir le message
    Merci pour votre aide, mais dans un autre interface j"uploade les images et je les envoie dans un répertoir "c:\\tmp\" et prendre juste leur nom et l'enregistrer dans la bdd, par exemple "photo.png". je n'enregistre ni flux ni chemin.

    Et alors, le principe du filtre reste valide

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    est ce que tu peux m'expliquer un peux plus sur ton principe par ce que j'ai jamais travailler avec ce filtre

    Merci

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Ci-joint une version simple... sans cache, brut de fonderie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    package com.obia.filter;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class FilterImage implements Filter
    {
        private static String IMAGE_REPOSITORY;
     
        @Override
        public void init(FilterConfig config) throws ServletException
        {
            IMAGE_REPOSITORY = config.getInitParameter("IMAGE_REPOSITORY");
        }
     
        @Override
        public void destroy()
        {
        }
     
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
        {
            File file = null;
            BufferedReader reader = null;
            FileReader fileReader = null;
            ServletContext sc = null;
            try
            {
                HttpServletRequest _request = (HttpServletRequest) request;
                HttpServletResponse _response = (HttpServletResponse) response;
     
                String filePath = _request.getRequestURI();
                file = new File(IMAGE_REPOSITORY + filePath.substring(filePath.lastIndexOf("/")));
     
                // Set content type
                sc = _request.getSession().getServletContext();
                String mime = sc.getMimeType(filePath);
     
                _response.setContentType(mime);
     
                // Set content size
                _response.setContentLength((int) file.length());
     
                // Open the file and output streams
                FileInputStream in = new FileInputStream(file);
                ServletOutputStream out = _response.getOutputStream();
     
                // Copy the contents of the file to the output stream
                byte[] buf = new byte[1024];
                int count = 0;
                while ((count = in.read(buf)) >= 0)
                {
                    out.write(buf, 0, count);
                }
                in.close();
                out.close();
     
            }
            catch (Exception e)
            {
                System.out.println(e.toString());
            }
            finally
            {
                if (fileReader != null) try
                {
                    fileReader.close();
                }
                catch (Exception e)
                {
                }
                if (reader != null) try
                {
                    reader.close();
                }
                catch (Exception e)
                {
                }
            }
        }
    }
    Le fichier web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        id="WebApp_ID" version="2.5">
        <display-name>Web1</display-name>
     
        <filter>
            <filter-name>FiltreImage</filter-name>
            <filter-class>com.obia.filter.FilterImageBuffered</filter-class>
            <init-param>
            <param-name>IMAGE_REPOSITORY</param-name>
            <param-value>C:\\Documents and Settings\\OBU\\Mes documents\\Mes images</param-value>
            </init-param>
     
        </filter>
        <filter-mapping>
            <filter-name>FiltreImage</filter-name>
            <url-pattern>/virtual/images/*</url-pattern>
        </filter-mapping>
     
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    Et la page de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <html>
     
    <body>
     
    Bienvenue pour ce test de filtre<br/>
    <br/>
    <img src="./virtual/images/Calvin.jpg" />
     
    </body>
    </html>

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    vous m'avaez donner un exemple mais ce que je veux c'est utiliser layout:collection , et vous m'avez donner un exmple avec un nom d'image statique, pour moi le chemin et statique mais le nom de la photo c'est lui qui change je ne sais pas si tu comprend mon idée

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Si c'est la propriété "picture" qui contient le nom de l'image, ce serait comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <layout:collectionItemtitle="Produits.picture.lbl">
      <layout:img src="./virtual/images/${ProduitsForm.picture}"/>
    </layout:collectionItem>
    Le point est peut-être en trop dans la balise <layout:img>, à vérifier...

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    j'ai fait tous ce que vous m'avez suggerer jusqu'a mnt j'ai toujours le meme resultat les cadres des images s'affichent sans aucune photo , ca veux dire que ${ProduitsForm.picture} ne donne aucune result dans une <layout:img> qui ce trouve dans une <layout:collection>,.....il faut trouver une chose qui remplace le property="picture"........donc il faut voir la solution a un autre niveau !!! ?????

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    sur le console eclipse me donne cette exception :

    java.io.FileNotFoundException: C:\tmp\$%7BProduitsForm.picture%7D (Le fichier spécifié est introuvable)

  13. #13
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Cela signifie que l'EL ${ProduitsForm.picture} n'est pas interprétée.
    L'application n'est donc pas J2EE 1.4.
    Peux-tu préciser quel serveur d'application tu utilises et sa version pour voir si tu peux passer l'appli en J2EE 1.4 ?

  14. #14
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    pour le serveur : tomcat 5.5
    IDE : eclipse 3.4
    Struts : 1.2
    Hibernate3

  15. #15
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    JDK 1.5

  16. #16
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Peux-tu poster le code du web.xml ?

  17. #17
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    j'ai enlevé le filtre que tu m'as suggeré avant, puisque ce n'est pas de la le probleme.

    le code du web.xml :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    <?xml version="1.0" encoding="Shift_JIS"?>
     
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
     
    <web-app>
    	  <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>2</param-value>
        </init-param>
        <init-param>
          <param-name>detail</param-name>
          <param-value>2</param-value>
        </init-param>
        <init-param>
    			<param-name>validate</param-name>
    			<param-value>true</param-value>
    		</init-param>
    		<init-param>
    			<param-name>multipartClass</param-name>
    			<param-value>
    				org.apache.struts.upload.CommonsMultipartRequestHandler
    			</param-value>
    		</init-param>
     
        <load-on-startup>2</load-on-startup>
      </servlet>
     
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
       <session-config>
    		<session-timeout>30</session-timeout>
    	</session-config>
    	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    		<welcome-file>/Acceuil.do</welcome-file>
    	</welcome-file-list>
    	<error-page>
    		<error-code>500</error-code>
    		<location>/Erreur.jsp</location>
    	</error-page>
     
      <taglib>
        <taglib-uri>/tags/struts-bean</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>/tags/struts-html</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>/tags/struts-logic</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>/tags/struts-nested</taglib-uri>
        <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>/tags/struts-tiles</taglib-uri>
        <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
      </taglib>
      <taglib>
          <taglib-uri>http://displaytag.sf.net</taglib-uri> 
     
          <taglib-location>/WEB-INF/displaytag.tld</taglib-location>
       </taglib> 
     
      <!--
      <taglib>
        <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/c.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
        <taglib-location>/WEB-INF/fmt.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
        <taglib-location>/WEB-INF/sql.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
        <taglib-location>/WEB-INF/x.tld</taglib-location>
      </taglib>
      -->
    </web-app>

  18. #18
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Comme tu es sous Tomcat 5.5, tu peux passer l'appli en J2EE 1.4 (Servlet 2.4/JSP 2.0).
    Pour cela, il faut remplacer les lignes suivantes du web.xml :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
     
    <web-app>
    par celle-ci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    	version="2.4">
    Grâce à cette modif, l'EL ${ProduitsForm.picture} sera bien interprétée.

    Par contre, comme tu utilises la JSTL, le passage en J2EE 1.4 va t'obliger à changer de version.
    Il va donc falloir télécharger la JSTL 1.1 et modifier les uri des tld comme indiqué dans le tutoriel d'adiGuba.

  19. #19
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    j'ai telecharger jstl 1.2 je l'ai mit sur mon ficiher lib, ensuite j'ai changer les nioms des uri comme sur le documment, j'ai ajouter le code sur le web.xml

    mais le web.xml me donne erreur sur les tag .


    est ce que tu peux m'expliquer plus et de me donner les étapes qu'il faut faire ainsi les liens de telechargements.

  20. #20
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Peux-tu poster la trace complète de l'erreur et le code du web.xml modifié ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Struts 1.3.10] Afficher des images LOCALES
    Par Beben45 dans le forum Struts 1
    Réponses: 0
    Dernier message: 27/12/2009, 20h53
  2. [1.x] affiche des images de layout
    Par benakacha dans le forum Symfony
    Réponses: 3
    Dernier message: 07/10/2009, 12h32
  3. [JLabel] Afficher des images
    Par Bouki dans le forum Composants
    Réponses: 8
    Dernier message: 25/03/2005, 11h38
  4. Afficher des images sous directX
    Par cyberlewis dans le forum DirectX
    Réponses: 17
    Dernier message: 12/07/2004, 13h07
  5. [TP][MULTI-PROBLEME]Comment afficher des images pcx
    Par mikoeur dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 24/10/2002, 14h57

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