Bonjour,

EDIT : j'ai essayer d'être suffisament claire; du coup ça fait un gros pavé, j'espere ne pas vous faire fuire, car dans le fond c'est pas tres compliqué.

Je souhaite disposer d'un formulaire a double entree, graphiquement c'est un tableau dont le nombre de lignes et de colonnes sont dynamiques.

Jusqu'a present on (dans notre équipe de dev.) faisait l'hypothese que le nombre de colonne maximal était borné à 10 par exemple et on définisait 10 attribut dans le bean
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<form-bean name="autorisationForm"   type="org.apache.struts.action.DynaActionForm">
  <form-property name="role0" type="java.util.ArrayList"/>
  <form-property name="role1" type="java.util.ArrayList"/>
  <form-property name="role2" type="java.util.ArrayList"/>
....
</form-bean>
Mais la je cherche plutot a utiliser un attribut du type java.lang.String[][].
J'ai donc défini mon form bean ainsi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<form-bean name="autorisationForm"   type="org.apache.struts.action.DynaActionForm">
  <form-property name="roles" type="java.lang.String[][]"/>....
</form-bean>
Sauf que la, mon serveur démarré plus, struts n'a pas l'air d'aimé.
Mais apparement l'attribut Type, ne sert que à controler que le type de l'objet que je pousse dans le formulaire est compatible, j'ai donc essayer de le contourner en mettant java.lang.Object en tant que Type.
Et la je parviens bien a remplir mon formulaire depuis mon controler; mais a l'affichage avec le code suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
<!-- Je ne suis plus sûre du code, car ici on utilise un autre lot de tags qui surcharge struts... -->
<html:textarea property="roles[i][j]/>"
J'obtiens : dans mes input-text : [Ljava.lang.String;@19dfbff..

Apres avoir regarder plus en profondeur, Struts utilise la fameuse méthode PropertyUtils#getProperty(Object, name) pour récupérer la valeur du formulaire
Et j'ai donc fait la petite experience suivante :
Déclaration d'un "MiniBean"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
public class MiniBean {
   private String[][] tab;
   //avec getter/setter
   ...
   public void init() {
     tab = new String[][] { new String[] { "Salut" } };
   }
}

Puis le code suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
MiniBean mini = new MiniBean();
mini.init();
System.out.println(PropertyUtils.getProperty(mini, "tab[0][0]"));
Et la grande tristesse j'obtiens : [Ljava.lang.String;@19dfbff

En gros il ignore la seconde dimension de mon tableau.
Donc en gros ça parait apparement impossible
Est ce que j'ai oublié quelque chose ou es ce réélement impossible?

Merci