Bonjour,

J'initialise un ArrayList dans une classe Action:
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
import java.util.ArrayList;
 
public class MaClasse extends Action {
    public ActionForward execute(...) {
        try {
            ArrayList alCol = new ArrayList();
            alCol.add("COL1");
            alCol.add("COL2");
            alCol.add("COL3");
            alCol.trimToSize();
            request.setAttribute("colReq", alCol);
        ...
 
        return mapping.findForward("showResult");
    }
}
La page JSP affichée après l'exécution est la suivante:
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
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
 
<html>
    <head>
        <title>Affichage ArrayList</title>
    </head>
 
    <body>
        <div>
            <table>
                 <logic:iterate id="titres" name="colReq">
                     <tr>
                         <logic:iterate id="intitule" name="titres">
                             <td><bean:write name="intitule" /></td>
                         </logic:iterate>
                     </tr>
                 </logic:iterate>
             </table>
         </div>        
    </body>
</html>
L'affichage de la JSP provoque l'erreur suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 org.apache.jasper.JasperException: Cannot create iterator for this collection
Par contre, si je remplace le code de ma classe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
            request.setAttribute("colReq", alCol);
par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
             ArrayList al = new ArrayList();
             al.add(alCol);
             request.setAttribute("colReq", al);
Ca fonctionne correctement...

Qu'est-ce que le fait de copier mon ArrrayList dans un autre change ?