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

avec Java Discussion :

Récupérer StringBuffer dans une autre classe


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 53
    Points
    53
    Par défaut Récupérer StringBuffer dans une autre classe
    Bonjour,

    dans une classe je crée un StringBuffer dans lequel j'ajoute des données.
    Puis dans une autre classe, je souhaite récupérer le tampon via le GET, mais cela ne fonctionne pas, j'ai un message d'erreur.

    classe où je crée le tampon
    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
     
    private StringBuffer tamponCategorie00 = null;
     
    ...
     
    tamponCategorie00 = new StringBuffer();
     
    ...
     
    if("00".equals(tab2[0])) {tamponCategorie00.append(text + "<br>");}
     
    ...
     
     
    public StringBuffer getTamponCategorie00() {
    	return tamponCategorie00;
    }
     
    public void setTamponCategorie00(StringBuffer tamponCategorie00) {
    	this.tamponCategorie00 = tamponCategorie00;
    }
    la récupération dans mon autre classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private CategoriesProblemes cp = null;
     
    ...
     
    cp  = new CategoriesProblemes();
    System.out.println(cp.getTamponCategorie00().toString());
    le message d'erreur
    La ligne 93 est le "System.out.println...."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.NullPointerException
    	DetailCategorie.affichage(DetailCategorie.java:93)

    merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Ton code a été trop nettoyé
    Ou fais-tu l'instanciation du StringBuffer ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    Trop nettoyé?

    je l'instancie dans une méthode, mauvaise idée?

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    getTamponCategorie00() retourne une instance null
    Je ne répondrai à aucune question technique en privé

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    pourtant j'utilise déja un autre tampon pour autre chose et je ne rencontre pas de problème comme ici

    mon code est correcte pourtant non?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Fait ça directement et dis nous si tu as toujours l'erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private StringBuffer tamponCategorie00 = new StringBuffer();

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    j'ai toujours une erreur mais plus la meme
    j'ai affiché la taille du tampon et c'est égal à 0 alors que le tampon est bien garni dans l'autre classe

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    C'est que tu ne fais jamais d'append(...) dedans...

    Tu peux insérer le code en entier de ta classe ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    je fais bien un append(...)

    Citation Envoyé par jacko2 Voir le message
    ...

    classe où je crée le tampon
    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
     
    private StringBuffer tamponCategorie00 = null;
     
    ...
     
    tamponCategorie00 = new StringBuffer();
     
    ...
     
    if("00".equals(tab2[0])) {tamponCategorie00.append(text + "<br>");}
     
    ...
     
     
    public StringBuffer getTamponCategorie00() {
    	return tamponCategorie00;
    }
     
    public void setTamponCategorie00(StringBuffer tamponCategorie00) {
    	this.tamponCategorie00 = tamponCategorie00;
    }
    Voici le code de mes 2 classes concernées

    CategorieProblemes.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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
     
    public class CategoriesProblemes extends javax.servlet.http.HttpServlet
    		implements javax.servlet.Servlet {
     
    	private String tabProblemes[] = { "ID Problème", "Catégorie du problème", "Nom du DE", "Prénom du DE", "Numéro Forem du DE" };
     
    	private Reader reader = null;
    	private String texte = null;
     
    	private CreationFichier cf = null;
     
    	private String tab[] = null;
    	private String tab2[] = null;
    	private String url = null;
    	private PrintWriter out = null;
     
    	private DateDuJour ddj = null;
     
    	private CSVFile csv = null;
    	private String tabCSV = null;
    	private String tab2CSV = null;
     
    	private StringBuffer tamponCategorie00 = new StringBuffer();
    	private StringBuffer tamponCategorie02 = new StringBuffer();
    	private StringBuffer tamponCategorie04 = new StringBuffer();
    	private StringBuffer tamponCategorie07 = new StringBuffer();
     
    	public CategoriesProblemes() {
    		super();
    	}
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
     
    		ddj = new DateDuJour();
     
    		out = response.getWriter();
    		out.println("<html>");
    		out.println("<head>");
    		response.setContentType("text/html");
    		out.println("<title>Ecran n°1 - Problèmes</title>");
    		out.println("</head>");
     
    		out.println("<body>");
    		out.println("<div id=\"top\">");
    		out.println("<img style=\"float: left;\" src=\"image\\"
    				+ "logo_forem.jpg\" />");
    		out.println("</div>");
     
    		out.println("<div><br><br><br>");
    		out.println("<h2>Problèmes</h2>");
    		out.println("<br><br>");
     
    		out.println("Voir les demandeurs d'emploi de la catégorie :");
    		out.println("<ul>");
    		out.println("<li><a href=\"DetailCategorie?categorie=00\">00</a></li>");		
    		out.println("<li><a href=\"DetailCategorie?categorie=02\">02</a></li>");
    		out.println("<li><a href=\"DetailCategorie?categorie=04\">04</a></li>");
    		out.println("<li><a href=\"DetailCategorie?categorie=07\">07</a></li>");
    		out.println("</ul>");
     
    		out.println("<br><br>");
     
    		out.println("<table align=\"center\">");
    		out.println("<tr>");
     
    		for(int i=65; i < 91; i++) {
    			out.println("<td align=\"center\">&nbsp;&nbsp;<a href=\"#" + (char)i + "\">" + (char)i + "</a>&nbsp;&nbsp;</td>");
    		}
     
    		out.println("</tr>");
    		out.println("</table>");
     
    		out.println("<br><br>");
     
    		affichage();
     
    		out.println("</div>");
    		out.println("</body>");
    		out.println("</html>");
    	}
     
    	protected void doPost(HttpServletRequest request,
    	HttpServletResponse response) throws ServletException, IOException {
     
    	}
     
    	public void affichage() {
    		reader = new Reader();
    		String nomFichier = reader.getCheminNomFichierDE();
    		reader.afficherContenu(nomFichier);
     
    		texte = reader.getTampon().toString();
    		tab = texte.split("<br>");		
     
    		for(int i = 65; i < 91; i++) {
    			out.println("<table align=\"center\" border=\"2\" widht=\"700\">");
     
    			out.println("<tr>");
    			out.println("<td id=\"" + (char)i + "\" colspan=\"5\"><b>" + (char)i + "</b></td>");
    			out.println("</tr>");
     
    			// Affichage des titres des colonnes
    			out.println("<tr>");
    			for (int j = 0; j < tabProblemes.length; j++) {
    				out.println("<td align=\"center\"><b>" + tabProblemes[j]
    						+ "<b></td>");
    			}
    			out.println("</tr>");
     
    			// Affichage des données dans la table
    			for (int k = 0; k < tab.length; k++) {
    				String text = tab[k];
    				tab2 = text.split( "	");
     
    				String lettre = "" + (char)i;
     
    				if(lettre.equals(tab2[1].substring(0, 1))) {
    					ddj.traiterDate();
     
    					int dt = Integer.parseInt(ddj.getMaDate()); // Date du jour
    					int dt2 = Integer.parseInt(tab2[6]); // Date de formation - date fin
     
    					if ("00".equals(tab2[0]) || "02".equals(tab2[0])
    							|| "04".equals(tab2[0]) || "07".equals(tab2[0])) {
    						if (dt2 >= dt) {			
    							url = "categorie=" + tab2[0];
     
    							if("00".equals(tab2[0])) {tamponCategorie00.append(text + "<br>");}
    							if("02".equals(tab2[0])) {tamponCategorie02.append(text + "<br>");}
    							if("04".equals(tab2[0])) {tamponCategorie04.append(text + "<br>");}
    							if("07".equals(tab2[0])) {tamponCategorie07.append(text + "<br>");}
     
    							out.println("<tr>");
    							out.println("<td>" + (k + 1) + "</td>");
    							out.println("<td align=\"center\"><a href=\"DetailCategorie?"
    									+ url + "\">" + tab2[0] + "</a></td>");
    							out.println("<td>" + tab2[1] + "</td>");
    							out.println("<td>" + tab2[2] + "</td>");
    							out.println("<td>" + (k + 1) + "</td>");
     
    							out.println("</tr>");		
    						}
    					}					
    				}	
    			}
    			out.println("</table>");
     
    			out.println("<br>");			
    			out.println("<p align=\"center\"><a href=\"#top\">Haut de page</a></p>");			
    			out.println("<br>");
    		}
    	}
     
    /* plus les get() et set() que j'ai enlevé pour pas que se soi trop long */
    }
    DetailCategorie.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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    public class DetailCategorie extends javax.servlet.http.HttpServlet implements
    		javax.servlet.Servlet {
    	static final long serialVersionUID = 1L;
     
    	public String infoDE[] = { "Voir profil", "Nom", "Prénom", "Numéro Forem" };
     
    	private String texte = null;
    	private String tab[] = null;
    	private String tab2[] = null;
    	private String url = null;
    	private PrintWriter out = null;
     
    	private String pCategorie = null;
    	private CategoriesProblemes cp = new CategoriesProblemes();
     
    	private DateDuJour ddj = null;
     
    	public DetailCategorie() {
    		super();
    	}
     
    	protected void doGet(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
     
     
    		ddj = new DateDuJour();
     
    		out = response.getWriter();
     
     
    		pCategorie = request.getParameter("categorie");
     
    		out.println("<html>");
    		out.println("<head>");
    		response.setContentType("text/html");
    		out.println("<title>Ecran n°2 - Détail Catégorie</title>");
    		out.println("</head>");
    		out.println("<body>");
    		out.println("<div>");
    		out.println("<img style=\"float: left;\" src=\"image\\"
    				+ "logo_forem.jpg\" />");
    		out.println("</div>");
     
    		out.println("<div><br><br><br>");
    		out.println("<h2>Détail catégorie</h2>");
    		out.println("<br><br>");
     
    		out.println("<table align=\"center\">");
    		out.println("<tr>");
     
    		for(int i=65; i < 91; i++) {
    			out.println("<td align=\"center\">&nbsp;&nbsp;<a href=\"#" + (char)i + "\">" + (char)i + "</a>&nbsp;&nbsp;</td>");
    		}
     
    		out.println("</tr>");
    		out.println("</table>");
     
    		out.println("<br><br>");
     
    		affichage(pCategorie);
     
    		out.println("</div>");
     
    		out.println("</body>");
    		out.println("</html>");
    	}
     
    	protected void doPost(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
     
    	}
     
    	public void affichage(String argCategorie) {
    		if("00".equals(argCategorie)) {texte = cp.getTamponCategorie00().toString();}
    		if("02".equals(argCategorie)) {texte = cp.getTamponCategorie02().toString();}
    		if("04".equals(argCategorie)) {texte = cp.getTamponCategorie04().toString();}
    		if("07".equals(argCategorie)) {texte = cp.getTamponCategorie07().toString();}
     
    		System.out.println("\n\ncoucou" + cp.getTamponCategorie07().length() +" MOI");
     
    		tab = texte.split("<br>");
     
    		System.out.println("\n\n" + cp.getTamponCategorie07().toString());
     
    		for(int i = 65; i < 91; i++) {
    			out.println("<table align=\"center\" border=\"2\" widht=\"700\">");
     
    			out.println("<tr>");
    			out.println("<td id=\"" + (char)i + "\" colspan=\"5\"><b>" + (char)i + "</b></td>");
    			out.println("</tr>");
     
    			// Affichage des titres des colonnes
    			out.println("<tr>");
    			for (int j = 0; j < infoDE.length; j++) {
    				out.println("<td align=\"center\"><b>" + infoDE[j]
    						+ "<b></td>");
    			}
    			out.println("</tr>");
     
    			// Affichage des données dans la table
    			for (int k = 0; k < tab.length; k++) {
    				String text = tab[k];
    				tab2 = text.split( "	");
     
     
    				url = "nom=" + tab2[1] + "&prenom=" + tab2[2] + "&noforem="
    						+ (k + 1) + "&age=" + tab2[4] + "&catact=" + argCategorie
    						+ "&finFormation=" + tab2[6];
     
    					String lettre = "" + (char)i;
     
    					if(lettre.equals(tab2[1].substring(0, 1))) {
    						ddj.traiterDate();
     
    						int dt = Integer.parseInt(ddj.getMaDate()); // Date du jour
    						int dt2 = Integer.parseInt(tab2[6]); // Date de formation - date fin
     
    						if(dt2 >= dt) {
    							out.println("<tr>");
     
    							out.println("<td><a href=\"FicheDemandeurEmploi?" + url
    									+ "\">Voir profil</a></td>");
    							out.println("<td>" + tab2[1] + "</td>");
    							out.println("<td>" + tab2[2] + "</td>");
    							out.println("<td>" + (k + 1) + "</td>");
     
    							out.println("</tr>");
    						}
    					}
    			}
    			out.println("</table>");
     
    			out.println("<br>");			
    			out.println("<p align=\"center\"><a href=\"#top\">Haut de page</a></p>");			
    			out.println("<br>");
    		}		
    	}
    }

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Ouch ! chat va pas le faire

    Dans DetailCategorie tu instancies un nouveau CategoriesProblemes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private CategoriesProblemes cp = new CategoriesProblemes();
    et ensuite tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp.getgetTamponCategorie00();
    Ce qui retourne forcément null ou une taille de 0, puisque à aucun moment tu n'as alimenté ton buffer dans cette instance cp.

    Les servlets sont instanciées dynamiquement par le conteneur de servlet, tu ne dois pas les instancier toi-même. Si tu veux transférer des informations, il faut que tu les mettes dans un scope (page|request|session|application).

    Exemple dans CategoriesProblemes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("categorie00", tamponCategorie00.toString());
    Et dans DetailCategorie pour récupérer tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String categorie00 = (String)request.getAttribute("categorie00");
    Mais je n'arrive pas à voir ce que tu veux faire en écrivant du code HTML dont tu vas te servir plus tard dans une autre servlet.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    en fait si je voulais faire via un StringBuffer c'etait pour éviter de lire le fichier une 2ème fois et de garder les infos dans le buffer.

    c'est quoi le moins lourd ? lire une 2ème fois le fichier ou stocker tout dans un tampon?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Tout dépend de la taille de ton fichier...

    Si ça prend moins d'1 sec de lire le fichier, autant le lire 2 fois, c'est pas gênant...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    mon fichier fait 2,4 Mo

  14. #14
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par Duc Lebowski Voir le message
    Tout dépend de la taille de ton fichier...

    Si ça prend moins d'1 sec de lire le fichier, autant le lire 2 fois, c'est pas gênant...
    A noter que la deuxième fois, il est fort possible que le fichier soit toujours dans le cache de l'OS (donc en mémoire)
    Je ne répondrai à aucune question technique en privé

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par millie Voir le message
    A noter que la deuxième fois, il est fort possible que le fichier soit toujours dans le cache de l'OS (donc en mémoire)
    +1 !

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/04/2010, 16h49
  2. Réponses: 3
    Dernier message: 29/09/2009, 20h58
  3. Réponses: 3
    Dernier message: 01/02/2009, 00h05
  4. Récupérer la sortie standard dans une autre classe
    Par EvilAngel dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/12/2006, 17h15
  5. Réponses: 1
    Dernier message: 05/05/2006, 14h37

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