JSP Forcer l'écriture d'un fichier xml

cs_Evarist Messages postés 4 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 26 février 2009 - 25 févr. 2009 à 16:25
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 - 26 févr. 2009 à 21:35
Bonjour,

Je sauvegarde des news dans un fichier xml.

J'utilise une jsp displayNews.jsp pour les affichées.

Pour ajouter une news une jsp qui affiche le formulaire : addNew.jsp

Pour l'enregistrement dans le fichier xml une autre jsp writeNew.jsp. Ci dessous le code d'enregistrement du fichier xml :

// Création de la source DOM
  Source source = new DOMSource(doc);
   
  // Création du fichier de sortie
  File fic = new File(xmlPath + "/communication.xml");
  //Result resultat = new StreamResult(xmlPath + "/communication.xml");
  Result resultat = new StreamResult(fic);
   
  // Configuration du transformer
  TransformerFactory fabriquee = TransformerFactory.newInstance();
  Transformer transformer = fabriquee.newTransformer();
  transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
 
  // Transformation
  transformer.transform(source, resultat);
   
    // Redirection affichage
    response.sendRedirect(displayNews.jsp
);

Ce code fonctionne sauf que l'enregistrement dans le fichier se fait aprés la redirection pour l'affichage et donc la new ajoutée n'apprait pas dans la liste.

Je ne trouve pas de moyen de forcer l'écriture du fichier avant la lecture de l'autre jsp.

Si quelqu'un à une idée ou une autre piste je suis preneur.

D'avance merci

3 réponses

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
25 févr. 2009 à 18:34
Le resultat est un flux (StreamResult). Il n'est probablement pas fermé avant ta redirection, ou du moins pas dans l'ordre que tu espérais.
Peut être qu'avec un resultat.getWriter().close() avant le
response.sendRedirect(displayNews.jsp
); ça marchera mieux.
0
cs_Evarist Messages postés 4 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 26 février 2009
26 févr. 2009 à 16:57
Avant toute chose merci pour ta réponse.

Je pense aussi que l'écriture dans le  fichier se fait après l'execution de la redirection.

J'ai essayer d'ajouter resultat.getWriter().close()

J'obtient alors l'erreur : The method getWriter() is undefined for the type Result

J'ai donc modifier le type de resultat en StreamResult.
J'ai alors une erreur car le résultat de
resultat.getWriter() est null

Je cherche donc maintenant à initialiser un Writer et à le charger dans l'objet resultat.

Voila ou j'en suis.
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
26 févr. 2009 à 21:35
sinon écris le xml en base et récupère le dans la jsp suivante et fais ta transformation à ce moment
ou transmet l'url du xml dans ta redirection, comme ça si la seconde jsp reçoit un argument, elle sait qu'elle doit lire ce xml et le transformer
0
Rejoignez-nous