Code source wiki de Erreur de type ArrayIndexOutOfBoundException sur le traitement d'une liste graphique
Modifié par Julien EYMERY le 2015/08/03 09:44
Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | L'exception ArrayIndexOutOfBoundException est levée sur le traitement d'une liste graphique lors de l'utilisation d'une même instance de classe dans 2 pages différentes (et de niveau de popup différent). | ||
| 2 | |||
| 3 | Explication : | ||
| 4 | Lors de l'affichage d'une page jsp, le bean qui lui est associé est instancié et cette instance est stockée sur la session HTTP. | ||
| 5 | Tant que cette instance est "utile"; c'est à dire que la page est encore affichée (ou peut l'être en retour d'appel (*RETOUR/ TERMINER)) elle est conservée sur la session. | ||
| 6 | De fait, un nouvel appel (TRAITER_PGM) à un programme Adélia déjà chargé va faire référence à la même instance de bean et conséquemment aux mêmes membres/variables du bean. | ||
| 7 | |||
| 8 | Il faut absolument avoir conscience de cette implémentation pour éviter tout effet de bord. | ||
| 9 | |||
| 10 | Le cas peut sommairement s'illustrer ainsi : | ||
| 11 | 1. PGM_1 fait un TRAITER_PGM *POPUP du PGM_2 // (PGM_1 reste sur la session car toujours affiché) | ||
| 12 | 1. (% style="line-height: 1.4285715;" %)PGM_2 fait un TRAITER_PGM du PGM_1 // désormais 2 pages affichent et utilisent la même instance de classe de PGM_1(%%) | ||
| 13 | |||
| 14 | |||
| 15 | |||
| 16 | Si une des pages supprime des éléments de sa liste graphique : l'affichage de l'autre page est déphasé par rapport aux éléments réellement stockés dans la liste ce qui provoque des erreurs d'accès pour certains index. | ||
| 17 | |||
| 18 | Il faut absolument éviter ce schéma de fonctionnement : le plus simple est de créer/dupliquer des programmes. | ||
| 19 | |||
| 20 | Remarque : on peut avoir aussi ce même type d'erreur dans le cas d'une application travaillant en mode non protégé (SESSION_MODE~=0 dans cfgConfiguration.properties) et que l'utilisateur travaille sur la même application web dans 2 onglets ou fenêtres du même navigateur. Pour plus d'information sur ce sujet voir l'aide Adélia sur les "pseudo-sessions HTTP". | ||
| 21 | ((( | ||
| 22 | == (% style="line-height: 1.5;" %)Articles connexes(%%) == | ||
| 23 | ))) | ||
| 24 | |||
| 25 | Les articles connexes apparaissent ici en fonction des étiquettes que vous avez sélectionnées. Cliquez pour modifier la macro et ajouter ou modifier des étiquettes. | ||
| 26 | |||
| 27 | {{liveData sort="doc.date:desc" source="liveTable" properties="doc.title,doc.date,doc.author" description="Recently updated" limit="5" filters="tag=web liste" sourceParameters="translationPrefix=platform.index."}}{{/liveData}} | ||
| 28 |