2016-08-06 4 views
0

J'utilise WebSphere 5.1.2 et je pense qu'il est Struts 1, mais je ne suis pas sûr.Struts n'utilise pas mon getter methd

Mon problème est le suivant.

J'ai sous ma forme d'une liste dynamique d'un haricot beanname, avec des entrées de type texte.

Ma forme est quelque chose comme ça (ne peut pas copier & coller car il est sur une machine virtuelle sans Internet):

public class MyForm extends ActionForm implements Serializable { 
    // Property 
    private List beanNameList = new ArrayList(); 

    // Simple Getter 
    public List getBeanNameList() { 
     if (beanNameList == null) { 
      beanNameList = new ArrayList(); 
     } 
     return beanNameList ; 
    } 

    // Item Getter 
    public BeanName getBeanNameList(int index) { 
     if (beanNameList == null) { 
      beanNameList = new ArrayList(); 
     } 
     for (int i = beanNameList.size(); i <= index; i++) { 
      beanNameList.add(new BeanName()); 
     } 
     return (BeanName)contractList.get(index); 
    } 

    // Simple Setter 
    public List setBeanNameList(List value) { 
     return beanNameList = value; 
    } 

    // Item Setter 
    public BeanName getBeanNameList(int index, BeanName value) { 
     if (beanNameList == null) { 
      beanNameList = new ArrayList(); 
     } 
     for (int i = beanNameList.size(); i <= index; i++) { 
      beanNameList.add(new BeanName()); 
     } 
     contractList.set(index, value); 
    } 
} 

Quand je soumets la forme, je reçois un IndexOutOfBoundsException: index: 3, taille : 0.

analizing la console, je me suis rendu Struts utilise ArrayList.get, et non getBeanNameList, comme vous pouvez le voir dans l'image:

console error

Des idées?

+0

Il semble que vous obtenez une erreur de plage. Je vous suggère de vérifier ces ** pour ** vous avez là. Ils sont tous de bons candidats pour être la cause de votre erreur. Un point de contrôle et un débogage vous aideront sûrement à trouver l'erreur. –

+0

Merci pour Replly ed, mais c'est le problème. Même si j'y mets un point de rupture, ça ne s'arrête pas. –

+0

Je mets le point d'arrêt sur la liste getter "getBeanNameList()", et il arrête, mais ne pas simple getter "beanname publique getBeanNameList (int index)" –

Répondre

1

J'ai trouvé le problème ...

Ma version de Struts est trop vieux, et il ne pas utiliser vraiment le getter et setter avec index sur siganture, il utilise ArrayList.get, ou quelque chose comme ça.

Pour résoudre le problème, je l'ai créé un champ caché avec la taille de ma liste, et sur la méthode de remise à zéro de la forme, je viens de configurer la taille de la liste.