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 2 Java Discussion :

Erreur "save failed: java.lang.NullPointerException"


Sujet :

Struts 2 Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Erreur "save failed: java.lang.NullPointerException"
    Mon projet est testStruts2 j'utilise l'IDE MyEclipse8.6, Serveur d'application: Jboss6 et MySQL pour la base de données.Les technologies utilisées sont : EJB3 struts2 ,JPA:
    Lors de l'exécution de l'ajout d'un utilisateur , et en suivant les étapes de debug l'instruction "entityManager.persist(entity)" ne passe pas et les erreurs suivantes sont affichées:

    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
    13:25:35,435 INFO  [testStruts2EJBPU] saving Utilisateur instance
    GRAVE [testStruts2EJBPU] save failed: java.lang.NullPointerException
    	at com.projet.ejb.UtilisateurFacade.save(UtilisateurFacade.java:71) [:](entityManager.persist(entity);)
    	at com.projet.struts.LoginAction.execute(LoginAction.java:113) [:](utilisateurFacade.save(utilisateur);)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_13]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_13]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_13]
    	at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_13]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243) [:]
    	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165) [:]
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252) [:]
    	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) [:]
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) [:]
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) [:]
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) [:]
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) [:]
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) [:]
    	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) [:]
    	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488) [:]
    	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [:]
    	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [:]
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.Final]
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.0.0.Final]
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [:6.0.0.Final]
    	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.0.0.Final]
    	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.0.0.Final]
    	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.0.0.Final]
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [:6.0.0.Final]
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.0.0.Final]
    	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.0.0.Final]
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.0.0.Final]
    	at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.0.0.Final]
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.0.0.Final]
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.0.0.Final]
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.0.0.Final]
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.0.0.Final]
    	at java.lang.Thread.run(Thread.java:619) [:1.6.0_13]
    Mon code est le suivant:
    Ma page JSP:
    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
    <%@taglib uri="/struts-tags" prefix="s" %>
    <html>
    <head>
    <title>Login</title>
    </head>
    <body>
    <s:form action="login">
     
    			<s:textfield name="loginUser" 
    				label="Login" >
    			</s:textfield>
     
    			<s:textfield name="pwdUser"
    				label="Password">
    			</s:textfield>	
    		  	<s:textfield name="nomUser"
    				label="Nom User">
    			</s:textfield>
    			<s:textfield name="prenomUser"
    				label="prenom User">
    			</s:textfield>
    			<s:submit/>
     </s:form>  
    </body>
    Ma classe LoginAction.java:
    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
    package com.projet.struts;
    
    import java.sql.SQLException;
    
    import javax.naming.NamingException;
    
    import com.projet.ejb.Utilisateur;
    import com.projet.ejb.UtilisateurFacade;
    import com.projet.ejb.UtilisateurId;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class LoginAction extends ActionSupport{
    	String loginUser;
    	String pwdUser;
    
    	String nomUser;
    	String prenomUser;
    	
    	UtilisateurId utilisateurId= new UtilisateurId();
    	Utilisateur  utilisateur = new Utilisateur();
    	UtilisateurFacade utilisateurFacade= new UtilisateurFacade();
    		
    	public String getLoginUser() {
    		return loginUser;
    	}
    
    	public void setLoginUser(String loginUser) {
    		this.loginUser = loginUser;
    	}
    
    	public String getPwdUser() {
    		return pwdUser;
    	}
    
    	public void setPwdUser(String pwdUser) {
    		this.pwdUser = pwdUser;
    	}
    	
    	public String getNomUser() {
    		return nomUser;
    	}
    
    	public void setNomUser(String nomUser) {
    		this.nomUser = nomUser;
    	}
    
    	public String getPrenomUser() {
    		return prenomUser;
    	}
    
    	public void setPrenomUser(String prenomUser) {
    		this.prenomUser = prenomUser;
    	}
    	
    	public String execute()
    	{
    		System.out.println(getLoginUser());
    		System.out.println(getPwdUser());
    		 utilisateurId.setLoginUtilisateur(getLoginUser());
    		 utilisateurId.setPasswordUtilisateur(getPwdUser());
    		 utilisateurId.setPasswordUtilisateur(getNomUser());
    		 utilisateurId.setPasswordUtilisateur(getPrenomUser());
    		 utilisateur.setId(utilisateurId); 
    	
    			try {
    				
    				utilisateurFacade.save(utilisateur);
    			} catch (NamingException e) {
    				
    				e.printStackTrace();
    			} catch (SQLException e) {
    				
    				e.printStackTrace();
    			} catch (ClassNotFoundException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		
    			 return SUCCESS;
    			}
    
    }
    Mon fichier struts.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    <package name="com.projet.struts" extends="struts-default">
    <action name="login" class="com.projet.struts.LoginAction">
                <result name="success">/index.jsp</result>
                <result name="input">/login.jsp</result>
    </action>
    </package>
    </struts>
    Ma classe save UtilisateurFacade.java
    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
    public class UtilisateurFacade {
    	// property constants
    
    	@PersistenceContext(unitName="testStruts2EJBPU")
    	private EntityManager entityManager;
    public void save(Utilisateur entity) throws NamingException, SQLException, ClassNotFoundException {
    		LogUtil.log("saving Utilisateur instance", Level.INFO, null);
    		try {
    			Context context = new InitialContext();
    			DataSource source= (DataSource) context.lookup("java:/testStruts2");
    			Connection conn= source.getConnection();
    		 if(conn.isValid(5)){
    			System.out.println("connexion valide");
    			entityManager.persist(entity);
    			LogUtil.log("save successful", Level.INFO, null);
    			 }
    		} catch (RuntimeException re) {
    			LogUtil.log("save failed", Level.SEVERE, re);
    			throw re;
    		}
    	}
    }
    Mon fichier persistance.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
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
     
    <persistence-unit name="testStruts2EJBPU" transaction-type="JTA">
    <jta-data-source>java:/testStruts2</jta-data-source>
    <class>com.projet.ejb.UtilisateurFacade</class>
    <properties>
    <property name="hibernate.archive.autodetection" value="class"/> 
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
    <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
    <property name="hibernate.connection.username" value="root"/> 
    <property name="hibernate.connection.password" value="admin"/> 
    <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/intranet"/>
    </properties>
    </persistence-unit>
    </persistence>
    et mon fichier mysql-ds.xml qui se trouve sous: Jboss_Home\server\default\deploy:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <datasources>
      <local-tx-datasource>
        <jndi-name>testStruts2</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/intranet</connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>root</user-name>
        <password>admin</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
     <metadata>
           <type-mapping>mySQL</type-mapping>
        </metadata>
      </local-tx-datasource>
    </datasources>

    Merci de m'aider à trouver une solution

  2. #2
    Membre régulier Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    Vérifiée que ton manager ou que l'objet que tu veux sauver soient bien instanciés.
    Lance en debug.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Lorsque je lance le debug il passe toutes les instructions avec succès mais lorsque il se place sur entityManager.persist(entity); il sort et passe au catch (RuntimeException re) {
    LogUtil.log("save failed", Level.SEVERE, re)

    et mon msg d'erreur est le suivant:

    save failed: java.lang.NullPointerException
    at com.projet.ejb.UtilisateurFacade.save(UtilisateurFacade.java:71) [:](entityManager.persist(entity)
    at com.projet.struts.LoginAction.execute(LoginAction.java:113) [:](utilisateurFacade.save(utilisateur)

  4. #4
    Membre régulier Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    Donc c'est bien ton manager qui n'est pas instancié et qui est null.
    Tu utilises Spring pour l'injection ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    nn j'utilise pas Spring, c'est obligatoire de l'utiliser?? Comment je pourrai résoudre ce prob

  6. #6
    Membre régulier Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    En debug, vérifie que c'est bien ton entityManager qui est null.

    Ensuite, je pense que tu ne dois pas faire un new UtilisateurFacade(), tu dois le récupérer depuis ta config; c'est lui qui va injecter ton entityManager :

    <persistence-unit name="testStruts2EJBPU" transaction-type="JTA">
    <jta-data-source>java:/testStruts2</jta-data-source>
    <class>com.projet.ejb.UtilisateurFacade</class>

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    et si je ne fais pas un new UtilisateurFacade Comment je vais le remplacer dans la classe LoginAction.java

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    j'ai remplacé l'instruction UtilisateurFacade utilisateur=new UtilisateurFacade();
    par @Ejb UtilisateurFacade utilisateur; et j'ai encore le même problème

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut JAAS avec Glassfish
    Bonjour SVP j'ai besoin de vos aides
    j'ai utilisé JAAS avec Glassfish je veux savoir la configuration du jaas au niveau du Glassfish ou ca se passe . quel fichier dois je modifier pour que l'application peut connaitre que j'utilise JAAS
    Merci

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/12/2012, 10h08
  2. erreur dans mon code "java.lang.NullPointerException"
    Par wiss20000 dans le forum Langage
    Réponses: 12
    Dernier message: 19/04/2007, 09h08
  3. [Débutant] Erreur java.lang.NullPointerException
    Par Kevin12 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/02/2007, 15h48
  4. Probleme erreur java.lang.NullPointerException
    Par Tsukaasa dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2006, 18h19

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