Bonjour à tous,
Je suis un petit peu perplexe quant au fonctionnement de struts pour "peupler" les formulaires. En effet, j'ai choisi d'utiliser une ArrayList<FormFile> afin de pouvoir remplir dynamiquement mon formulaire en fonction du nombre d'éléments à uploader et je ramasse systématiquement une erreur lors du submit à moins d'initialiser la liste en amont au moment d'afficher la jsp...
Ainsi, ce code génère l'erreur
Par contre, si je force l'instanciation d'un ou plusieurs éléments, ça marche et je retrouve bien mon fichier en position 0 dans l'action :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ArrayList<FormFile> listeFichier; Constructeur () { listeFichier= new ArrayList<>(); } public FormFile getListeFichier(int pIndex) { return this.listeFichier.get(pIndex); } public void setListeFichier(int pIndex,FormFile pFichier) { this.listeFichier.set(pIndex,pFichier); }
Code qui fonctionne.
Du coup, je ne vois pas bien l'intérêt de recourir à une liste si c'est pour se retrouver avec le fonctionnement d'un tableau.
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 ArrayList<FormFile> listeFichier; Constructeur () { listeFichier= new ArrayList<>(); for (int i=0;i<=10;i++) { this.listeFichier.add(null); } } public FormFile getListeFichier(int pIndex) { return this.listeFichier.get(pIndex); } public void setListeFichier(int pIndex,FormFile pFichier) { this.listeFichier.set(pIndex,pFichier); }
J'ai cherché et j'ai testé un peu tout comme un add dans le getter et dans le setter si l'index est supérieur ou égal à la taille.
Et que dalle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for (int i=this.listeFichier.size();i<=pIndex;i++) { this.listeFichier.add(null); }
Soit il y a un truc que j'ai pas compris, soit struts ne gère en fait que des tableaux et ce n'est pas la peine d'insister.
Si quelqu'un a la réponse...
Edit : Bon, j'ai mis la version 1.3.10 et le comportement change (probablement un bug de la version que j'avais).
Partager