Bonjour,
Je développe avec NetBeans 5.5 et le VWP une application comprenant des phases de chargement assez longues entre 2 pages ( accès aux bbdd)
J'ai donc eu besoin de développer une petite page de chargement.
Voila ma mèthode :
1. Page 1 : A l'action du bouton de validation , je crée un nouveau Thread dont la mèthode run contient le traitement long... Pendant ce temps la page 1 se dirige vers une autre page de chargement
2.Page chargement : animation d'une barre de chargement... A la fin de l'execution du thread créé précédemment un bouton "suivant" est rendu activable, celui-ci renvoie à la page2.
3 ... Affichage des résultats
Pour le moment je me suis contenté de programmer un modèle "bidon" avec un sleep au lieu du chargement :
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 public String button1_action() { // TODO: Process the action. Return value is a navigation // case name where null will return to the same page. new Thread(){ public void run() { System.out.println("is running"); try{ Thread.sleep(duree); } catch(Exception e){ System.out.println("erreur sleep"); } System.out.println("finished running"); getSessionBean1().setFini(true); } }.start(); return "vers_page_chargement"; }
Or l'instruction getSessionBean1().setFini(true); me renvoie l'erreur suivante :
Exception in thread "Thread-192"
java.lang.NullPointerException
Quelqu'un sait-il pourquoi le sessionbean n'est pas accéssible depuis le thread crée?? (cette même instruction fonctionne correctement hors du thread)
Y-a-til une erreur théorique dans ma méthode?? ( je suis inexperimenté dans l'usage des Thread.... et du dvpmt Web en Java tout court d'ailleurs)
PS : Je sais que ce setFini(true) en fin de code n'est pas le moyen le plus "propre" de savoir qu'un Thread a terminé son éxécution mais ca me servait surtout pour tester l'accès au SessionBean dont j'ai grandement besoin dans mon traitement réel.
Merci d'avance!!!
Partager