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

Servlets/JSP Java Discussion :

[fileUpload] Toujours d'actualité pour Servlet ?


Sujet :

Servlets/JSP Java

  1. #1
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut [fileUpload] Toujours d'actualité pour Servlet ?
    Bonjour,

    Après avoir lu des tutorials sur la façon d'utiliser l'API de fileUpload d'Apache, j'avoue que je reste sur ma fain.

    L'API a l'air sympa et tout, mais impossible de l'implémenter pour que ça fonctionne chez moi... la raison : simplement que les tutoriels que j'ai vu utilisait la version 1.1.1, et j'ai downloadé la toute dernière version 1.2.1 qui a l'air de fonctionner différemment.

    Voici le code de ma JSP (upload form) :
    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
     
     
    <body>
     
    <BR />
     
    <nested:form enctype="multipart/form-data" action="/detail-view">
    	<bean:message key="upload.button.label"/>&nbsp;:<BR />
    	<input name="fileToUpload" class="btnD" id="file" size="15" type="file"/>&nbsp;
    	<input type="submit" class="btnD" name="action" value="uploadFile" />
    </nested:form>
     
    <BR />
     
    </body>
    Est-ce que quelqun pourrait me dire quel code appliquer dans ma servlet pour récupérer le contenu du fichier ainsi uploader ? En utilisant l'API fileUpload version 1.2.1 ou autre chose, peu m'importe tant que ça fonctionne.

    J'ai tenté plusieurs chose en dehors de fileUpload, voici quelques unes de mes dernières tentatives :
    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
     
     
    	public ActionForward uploadFile (ActionMapping 				theMapping,
    										ActionForm 				theForm,
    										HttpServletRequest 		theRequest,
    										HttpServletResponse 	theResponse) {
     
    		String myContentType = theRequest.getContentType();
    		if ( myContentType != null && myContentType.indexOf("multipart/form-data") >= 0 ){
     
    			String theFile = theRequest.getParameter("fileToUpload");
    			logger.warn("theFile => "+theFile);
    			try{
    				DataInputStream in = new DataInputStream(theRequest.getInputStream());
    				int formDataLength = theRequest.getContentLength();
     
    				logger.warn("[uploadFile] Input stream length : "+formDataLength);
     
    				byte dataBytes[] = new byte[formDataLength];
    				in.readFully(dataBytes);
    				in.close();
     
    				logger.warn("[uploadFile] Content length : "+dataBytes.length);
    				logger.warn("[uploadFile] Content : "+new String(dataBytes));
    			}catch(IOException e){
    				logger.error("[uploadFile] IOException while reading uploaded file : "+e.getMessage());
    			}
     
    		}
     
    		return theMapping.findForward(JSP_APP_DET_VIEW);
    	}
    En vous remerciant par avance pour votre aide.

    Cordialement.

  2. #2
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Honnêtement je suis paumé avec l'API fileUpload.

    Tout le monde la recommande dans ce forum, mais null part je ne vois d'exemple concret avec la toute dernière version (et je ne trouve pas où télécharger une version moins récente)

    En utilisant la dernière version, la classe 'ServletFileUpload' n'étant plus présente, la plupart des tutoriels deviennent inutilisables.

    D'ailleurs sur le site d'apache lui-même, il me semble avoir vu dans la FAQ que pour l'utilisation via les Servlet de cet utilitaire, il faut oublier car les Servlets font déjà un tri du contenu envoyé dans l'objet Request, du coup rien n'est trouvé via l'API fileUpload, ou du moins via l'utilisation qu'il en fait dans la plupart des tutoriels.

    Est-ce que je me trompe, est-ce que quelqun sait comment faire ?

    Mon erreur pourrait-elle venir du fait que je tente d'accéder au fichier depuis une action et non depuis la méthode doPost de ma servlet (de ce que j'ai lu dans d'autres discussions ?

  3. #3
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Bon,

    Il se trouve que l'un de mes sous projets (dépendance de projet à projet) intégrait déjà l'API fileupload dans une version bien plus ancienne (l'une des premières) qui ne comprenait pas la classe 'ServletFileUpload'. Or cette version de l'API prennait l'ascendant point de vue priorité classpath sur la nouvelle version que j'ai intégré dans mon autre application, rendant pour le coup inutile et non reconnue cette nouvelle version, d'où ma galère et mes questions.

    Erreur bête donc, comme la plupart du temps d'ailleurs.

    Je vais donc me remettre à la tâche sur les différent tutoriel que j'ai vu, ça devrait fonctionner maintenant que ce problème de classpath est résolu.

    Désolé pour le dérangement ^^

  4. #4
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Veux tu que je te mette en piece jointe la version 1.2 que j'utilise ?

    De plus le code que tu utilises ne repose pas sur les portions de code cité au niveau de la documentation qu'il faut utiliser

    http://commons.apache.org/fileupload/using.html


    Je viens de télécharger la derniere API et la servlet est toujours bien présente import org.apache.commons.fileupload.servlet.ServletFileUpload

  5. #5
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Bonjour Link,

    Merci pour ton intérêt dans un premier temps.

    Effectivement, le code que j'ai mis plus haut n'avais aucun lien avec l'API, j'avais codé via l'API dans un premier temps, et voyant que mes package n'étaient pas détecté (pour la raison citée plus haut), j'ai tenté autre chose, sans l'API.

    Désormais donc, j'ai bien suivi les recommandations du site (notamment celle de la page que tu as donné) et voici mon code (simpliste pour commencer) :

    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
     
     
    	public ActionForward uploadFile (ActionMapping 				theMapping,
    										ActionForm 				theForm,
    										HttpServletRequest 		theRequest,
    										HttpServletResponse 	theResponse) {
     
     
    		String myContentType = theRequest.getContentType();
    		if ( myContentType != null && myContentType.indexOf("multipart/form-data") >= 0 ){
     
    			// Create a factory for disk-based file items
    			FileItemFactory factory = new DiskFileItemFactory();
     
    			// Create a new file upload handler
    			ServletFileUpload upload = new ServletFileUpload(factory);
     
    			try{
    				// Parse the request
    				List items = upload.parseRequest(theRequest);
    				logger.warn("Nb items = "+items.size());
     
    			}catch(FileUploadException e){
    				logger.error("FUE : "+e.getMessage());
    			}catch(Exception e){
    				logger.error("OE : "+e.getMessage());
    			}
     
    		}
     
     
    		return theMapping.findForward(JSP_APP_DET_VIEW);
    	}
    Mon résultat (traces) est le suivant : il n'y a aucun item de récupéré.

    Je pense que cela vient de ce fait là : http://commons.apache.org/fileupload...n-action-fails
    Struts parse automatiquement les requettes. Pour le coup il faut que je trouve autre chose, ou du moins comment faire différemment.

    Je vois que tu as déjà travaillé avec, as-tu une idée (ça ira toujours plus vite ^^) ?

  6. #6
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Je passe par du struts aussi avec cette API et aucun pb.

    Je te renvoie sur un ancien post

    http://www.developpez.net/forums/d71...t/#post4140129

  7. #7
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Ok, j'ai beau utiliser le même code que le tiens, ça ne fonctionne pas (je m'arrête juste à la récupération de la liste des items).

    Toujours aucun item de récupéré.

    J'ai lu que certains utilisent ce code à l'intérieur d'une méthode doPost. Est-il obligatoire d'appeler une méthode nommée 'doPost' ? S'agit-il d'une méthode commune de la servlet ? Car pour le moment, j'utilise le code à l'intérieur de ma méthode de la classe d'action appelée.

  8. #8
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    J'ai copié / collé le code de mon action dans une méthode doPost qui overwrite la méthode existante de la classe mère de ma Servlet pour voir si ça règle le problème :

    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
     
     
    	@Override
    	public void doPost(HttpServletRequest theRequest, HttpServletResponse theResponse)
    			throws IOException, ServletException {
    		// TODO Auto-generated method stub
     
    		super.doPost(theRequest, theResponse);
     
    		if ( ServletFileUpload.isMultipartContent(theRequest) ){
     
    			// Create a factory for disk-based file items
    			DiskFileItemFactory factory = new DiskFileItemFactory();
     
    			int sizeMaxForJVM = 50;
    			factory.setSizeThreshold(sizeMaxForJVM);
    			factory.setRepository(new File("C:\tmpFiles"));
     
    			// Create a new file upload handler
    			ServletFileUpload upload = new ServletFileUpload(factory);
     
    			try{
    				// Parse the request
    				List items = upload.parseRequest(theRequest);
    				logger.warn("Nb items = "+items.size());
    				Iterator iter = items.iterator();
     
    				while (iter.hasNext())
    				{
    					logger.warn("Hasnext");
    				}
     
    			}catch(FileUploadException e){
    				logger.error("FUE : "+e.getMessage());
    			}catch(Exception e){
    				logger.error("OE : "+e.getMessage());
    			}
     
    		}
     
    	}
    Mais rien n'y fait. Je n'ai même pas de message de log donc à priori l'upload ne passe pas par doPost. (edit: ni doGet, j'ai fais une redirection de doGet sur doPost et rien ne change)

  9. #9
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Non pas obligatoire.
    Dans mon cas je suis passé par une servlet pour utilisé une barre de progression sur l'avancement de l'upload le post uplodait et par le get je récuperais l'avancement via un flux xml.

    tu rentres bien dans la portion de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ServletFileUpload.isMultipartContent(request)
    et au niveau de Firebug sous Firefox qu'est ce que tu y vois ?

  10. #10
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Dans la méthode doPost de ma servlet, je n'y rentre tout simplement pas (j'ai ajouté des traces dans ma log au tout début de la méthode, et rien ne s'affiche)

    Par contre dans la méthode de ma classe d'action, je rentre bien dans le code, et au niveau des traces, j'ai "Nb items = 0", donc je passe bien là où il faut, c'est juste que rien n'est récupéré.

    Par contre je ne peux pas utilise firefox, mes applications sont configurée pour être accessible via SPNEGO (identification/reconnaissance user/mot de passe sur la session windows et un VPN), et FF n'est pas configuré pour le reconnaitre. Du coup, uniquement IE pour cette application.
    Je connais pas trop IE vu que je suis adepte de FF, mais il y a peut-être l'équivalent ?

    En tout cas, aucune erreur Java, la seule chose bizarre pour le moment c'est au niveau de ma JSP, lorsque j'envoi mon fichier en soumettant l'upload, le retour de mon action s'affiche à l'intérieur de ma frame courante (donc ce n'est pas la page IE entière qui est raffraichi, mais uniquement mon iframe où se situe mon formulaire d'upload (l'application est scindée en 4 iframes... un vieux truc, no comment ^^) Mais ce petit souci ne doit pas être en relation avec le fait que l'upload ne fonctionne pas (du moins je ne pense pas)


    Au cas où, voici ma JSP (form upload) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <nested:form enctype="multipart/form-data" action="/detail-view">
    	<bean:message key="upload.button.label"/>&nbsp;:<BR />
    	<input name="upload" class="btnD" id="upload" size="15" type="file"/>&nbsp;
    	<input type="submit" class="btnD" name="action" value="uploadFile" />
    </nested:form>
    Enctype est spécifié, l'action fait référence à /detail-view, qui dans mon struts-config.xml fait référence à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
            <forward name="detail-view"				path="/jsp/detail-view.jsp" />
     
            <action type="org.*.*.*.gui.action.DetailViewAction"
                	name="adminForm"
                	path="/detail-view"
                	scope="session"
                	parameter="action">
            </action>

  11. #11
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Sous IE il y a bien HTTPWatch qui te permet d'analyser c'est loin de valoir firebug mais ca aide pas mal.

    Je viens de jeter un oeil sur leur site il y a une version gratuite mais je ne sais pas si elle te sera d'une grande aide

    http://www.httpwatch.com/download/

    Je pense que tu peux te débarasse de la servlet et repasser au niveau de ton action.

    pourrais tu montrer le code html généré de ta page ou l'upload est réalisé.

    derniere chose quand tu arrives dans ton action d'upload peux tu faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(request.getContentLength())
    Avec un gros fichier de préférence pour voir si la taille correspond.

  12. #12
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Voici le code généré de ma JSP où se situe le formulaire d'upload:

    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
     
     
    <script language="javascript">
    	IS_UPDATE = "true";
    </script>
     
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
     
    <LINK rel="stylesheet" type="text/css" href="/Admin/themes/admin.css"/>
     
    <!-- Use relative references to other files -->
    <base href="http://app.*.*.org:8080/Admin/jsp/application/application-detail.jsp">
    <script language="JavaScript">
    <!--
    /*** Color constants ***/
    colourBGNormal 			= '#DDEEFF';
    colourBGSelected			= '#FFF5A5';
    colourBGNormalL 			= '#F0F0FB';
    colourBGNormalD 			= '#DADBF4';
    colourBGBloqued			= '#E7E7E7';
    colourError				= '#d20707';
     
     
    //-->
    </script>
     
    <SCRIPT LANGUAGE="JavaScript" 	SRC="/Admin/scripts/keyboard.js"></SCRIPT>
    <SCRIPT LANGUAGE="JavaScript" 	SRC="/Admin/scripts/event.js"></SCRIPT>
    <SCRIPT LANGUAGE="JavaScript" 	SRC="/Admin/scripts/admin.js"></SCRIPT>
    <SCRIPT LANGUAGE="JavaScript" 	SRC="/Admin/scripts/ajax.js"></SCRIPT>
    <script language="JavaScript" src="/Admin/scripts/jquery-1.4.min.js"></script>
     
     
    </head>
     
    <NOSCRIPT>Your browser does not support SCRIPTS</NOSCRIPT>
     
    <body>
     
    <BR />
     
    <form name="adminForm" method="post" action="/Admin/detail-view.do" enctype="multipart/form-data">
    	Update content with external existing file&nbsp;:<BR />
    	<input name="upload" class="btnD" id="upload" size="15" type="file"/>&nbsp;
    	<input type="submit" class="btnD" name="action" value="uploadFile" />
    </form>
     
    <BR />
     
    </body>

    Pour la log sur le content length, voici deux tests:
    - avec un PDF de 1.7Mb : Content Length = 1836244
    - avec un TXT de 4Kb : Content Length = 3495

    Donc à priori de ce coté rien à signaler, le fichier est bien envoyé au serveur.

    Par contre, une chose me titille.
    Dans mon fichier de configuration struts, j'ai associé un FormBean à ma classe d'action (et ma JSP).
    J'ai essayé d'ajouter un champ à ce formBean, de type file, ayant pour nom 'upload', et lorsque je tente d'accéder à ma JSP, j'ai une erreur de type 'PopulateBean, type missmatch'.

  13. #13
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Plop,

    Bon alors, suivant mon instinct (désolé on me persuade difficilement :p) je me suis dis que ça ne pouvait venir que du fait que struts parse automatiquement le contenu, et donc que c'est normal qu'on ne récupère rien via fileUpload.

    J'ai donc tatonner pour voir s'il y a moyen de récupérer des Handler depuis le formBean, et c'est le cas.

    Voici le code pondu pour récupérer mon fichier uploader via le formBean :
    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
     
     
    		if ( ServletFileUpload.isMultipartContent(theRequest) ){
     
    			AdminForm myForm = (AdminForm) theForm;
    			logger.warn("post action => "+myForm.isPostActionFlag());
    			MultipartRequestHandler mpr = myForm.getMultipartRequestHandler();
    			Hashtable myElems = mpr.getFileElements();
    			logger.warn("File table => "+myElems);
    			if ( myElems != null ){
    				logger.warn("Total = "+myElems.size());
    			}
     
    			logger.warn("Content Length = "+theRequest.getContentLength());
     
    }
    J'ai les traces suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    post action => false
    File table => {upload=220cw9fb_00_pss_fra.pdf}
    Total = 1

    Donc j'ai envie de dire : "bingo" ^^

    Je ne comprends comment ça puisse marcher chez toi et pas chez moi (via fileUpload), certainement la configuration de struts qui diffère.

    En tout cas je te remercie pour le passer sur mon problème, sans quoi je ne pense pas que je me serai orienté sur cette solution.

    Bonne fin de journée à toi.

    Je posterai un code propre en guise de solution au problème lorsque j'aurai mis en place définitivement la chose, le repas m'appelle !

  14. #14
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    J'ai toruvé ce petit lien qui pourrait éventuellement t'interesser

    http://www.roseindia.net/struts/strutsfileupload.shtml

  15. #15
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Je te remercie pour le lien, très utile et clair.

    Ca revient au même que le code que j'ai donné plus haut, mais en plus clair je pense niveau organisation du code.
    Cela dit dans mon cas, je pense que je vais garder la méthode "codage à l'intérieur de la méthode d'action" car récupérer le fichier au sein même de mon form bean n'est pas mon but.

    La fonctionnalité est appelée via Ajax depuis la JSP, et l'action d'upload est juste là pour récupérer le contenu du fichier envoyé, mettre à jour un Bean, et renvoyé dans la JSP le contenu du fichier pour l'afficher dans un textare (mise à jour sans rechargement de page donc).

    Dans tous les cas, merci pour cet éclaircissement.

Discussions similaires

  1. iFrames toujours d'actualité ?
    Par Lolie11 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 29/05/2007, 15h35
  2. configuration apache pour servlet
    Par mikees dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 08/05/2007, 14h42
  3. [débutant].besoin d'aide pour servlet
    Par 2tsiris dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 30/03/2006, 14h36
  4. [Tiles] Toujours d'actualité?
    Par vallica dans le forum Struts 1
    Réponses: 8
    Dernier message: 29/03/2006, 11h08

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