Solution iFrame
Fermé
TempsMort0
Messages postés
43
Date d'inscription
mardi 22 janvier 2013
Statut
Membre
Dernière intervention
1 août 2018
-
13 juil. 2018 à 16:58
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 1 août 2018 à 19:42
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 1 août 2018 à 19:42
1 réponse
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
Modifié le 13 juil. 2018 à 18:04
Modifié le 13 juil. 2018 à 18:04
Bonjour,
"Ce genre d'iframe marche mais lors de la réactualisation, le fichier n'est pas relu instantanément."
C'est normal, Google stocke une copie du fichier sur le cloud, il ne lit jamais ton fichier local.
"je dois faire comprendre le php à Tomcat"
Non, si tu fais du Java tu ne fais pas du PHP, ça n'a pas de sens. Tu peux faire la même chose avec une JSP (en plus long car il faut tout réécrire, ou trouver une bibliothèque, mais en Java, qui fait la même chose)
Le plus propre de lire ta feuille Excel à l'aide de Apache POI et la restituer en HTML via ta JSP.
Par exemple à l'aide de bibliothèques JavaScript comme celles proposées sur jspreadsheets.com
Un exemple avec jexcel, voici ce que tu pourrais mettre dans ta JSP.
(en remplaçant bien sûr les valeurs de
Ce qui donnerait ceci :
"Ce genre d'iframe marche mais lors de la réactualisation, le fichier n'est pas relu instantanément."
C'est normal, Google stocke une copie du fichier sur le cloud, il ne lit jamais ton fichier local.
"je dois faire comprendre le php à Tomcat"
Non, si tu fais du Java tu ne fais pas du PHP, ça n'a pas de sens. Tu peux faire la même chose avec une JSP (en plus long car il faut tout réécrire, ou trouver une bibliothèque, mais en Java, qui fait la même chose)
Le plus propre de lire ta feuille Excel à l'aide de Apache POI et la restituer en HTML via ta JSP.
Par exemple à l'aide de bibliothèques JavaScript comme celles proposées sur jspreadsheets.com
Un exemple avec jexcel, voici ce que tu pourrais mettre dans ta JSP.
(en remplaçant bien sûr les valeurs de
jexcelDatapar tes lignes et colonnes lues avec Apache POI)
<html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="http://cdn.bossanova.uk/js/jquery.jexcel.js"></script> <link rel="stylesheet" href="http://cdn.bossanova.uk/css/jquery.jexcel.css" type="text/css"/> </head> <body> <div id="jexcelDiv"></div> <script> jexcelData = [ ['Google', 1998, 807.80], ['Apple', 1976, 116.52], ['Yahoo', 1994, 38.66], ]; $('#jexcelDiv').jexcel({ data:jexcelData, colWidths: [ 300, 80, 100 ] }); </script> </body> </html>
Ce qui donnerait ceci :
18 juil. 2018 à 16:57
J'ai tenté quelques fois avec Handsontable, puis j'ai essayé avec jExcel, plusieurs façons de remplir ce tableau avec les valeurs déjà récupérées dans un .java, le problème est la façon dont je m'y prend ou la façon dont je fais stocker mes List dans la session.
C'est sale mais je me suis dis que c'était la façon la plus simple de voir si ça marche.
Mon ArrayList "conso" est dans le fichier CommandeStock qui n'est pas lié à ce qui nous intéresse mais est celle qui parcourt en premier le fichier Excel.
Je les stocke :
Je les reprends dans la Servlet (GestionStoclk) lié à ma Jsp affichant le résultat voulu :
Et j'ai un NullPointerException à chaque fois que j'appelle un "conso.get(0)" pour tester ou "conso.get(0).getDesignation()" et même avec ce foreach donc l'ArrayList est vide ou mal stockée dans la session.
Aurais-tu une idée ?
18 juil. 2018 à 20:57
Pour déboguer tu peux temporairement afficher le contenu des ensembles des 4 scopes pour visualiser dans quel scope est l'attribut que tu cherches et corriger le code (soit au moment du set, soit au moment du get)
Exemple :
Remarque :
25 juil. 2018 à 15:54
Je comprends que si je fais :
"conso" est stocké dans la session et non dans la requête ni dans la page.
Il était donc logique de récupérer la valeur de cette façon :
(Je stocke dans la session car la servlet avec le setter et le jsp avec le getter ne sont liés en aucun point en terme de requête) J'ai pensé que comme la servlet n'était pas appelée, une de ses fonctions qui remplie "conso" ne serait pas appelée non plus, mais je ne pense pas au final.
Je ne retrouve pas "conso" dans l'affichage des scopes, il me manque des informations que je ne trouve pas, les valeurs stockées dans les sessions comme celle-là a-t-elle besoin de voir sa servlet éxecutée afin que les valeurs soient stockées dans la session ?
25 juil. 2018 à 19:46
Donc si c'est une servlet qui gère le set, elle doit être appelée avant la servlet qui fait le get.
Éventuellement, tu peux faire une méthode qui fait le get, et quand il ne la trouve pas l'initialise.
Cette méthode pourrait alors être appelée par n'importe quelle servlet, sans problème d'ordre, la première servlet qui en a besoin l'initialise dans la session.
Exemple :
Remarque : si ta liste de consommables est la même pour tous les utilisateurs, tu pourrais la mettre dans le scope de l'application, plutôt que dans le scope de session de chaque utilisateur.
31 juil. 2018 à 14:28
L'importante chose est que toutes les valeurs sont passées, dans le code source de la page sur navigateur, toutes les valeurs sont passées dans la partie du script mais l'affichage ne se fait pas, aurai-je raté quelque chose ?