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
Mais la je cherche plutot a utiliser un attribut du type java.lang.String[][].
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>
J'ai donc défini mon form bean ainsi
Sauf que la, mon serveur démarré plus, struts n'a pas l'air d'aimé.
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>
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
J'obtiens : dans mes input-text : [Ljava.lang.String;@19dfbff..
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]/>"
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
Et la grande tristesse j'obtiens : [Ljava.lang.String;@19dfbff
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]"));
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
Partager