Bonjour à tous
J'viens de passer une journée "d'autoformation" au framework struts .. et subsistent encore dans ma tête un certain nombre d'interrogations concernant des sujets divers et variés (que je n'ai pas trouvé dans la FAQ)
Donc j'y vais ... n'hésitez pas si vous connaissez la réponse à l'une d'entre elle ... je suis preneur ^^
1] Le "scope" des ActionForm est soit request, soit session ... il est dit que cela sauvegardera le FormBean dans la requete ou dans la session ...
Est-ce que vous auriez un exemple concret de la sauvegarde du FormBean en session ... parce que j'vois pas trop trop ...
2] Dans la balise <html:javascript>, que signifient les attributs "staticJavascript" et "dynamicJavascript" ?... Ils sont positionnés à true... mais je ne sais pas vraiment "pourquoi" et ce que cela signifie
3] Prenons le "validateur" intRange disponible dans tout bon validator-rules.xml
Ce validateur prend deux "paramètres", min et max, lorsqu'il est "utilisé" dans un depends ... Où peut-on connaître le nom des paramètres passés à un validateur donné ?... Je n'ai rien trouvé dans le validator-rules.xml ... faut-il avoir accès au code source de la classe Java censée réaliser le test pour connaître les noms des paramètres à passer ?
Ca me paraît bizarre ... (et pas du tout cohérent avec le comportement qu'on peut avoir, par exemple, avec les taglibs, où on a un descripteur qui nous permet de rapidement "voir" les attributs qu'on peut utiliser sur les taglibs utilisées)
4] Pourquoi est-ce que les codes "client" fournis dans le validator-rules.xml sont aussi "compliqués" ... par exemple, si je prend le code de "maxlength" :
... Ca me parait bien compliqué pour quelque chose dont je m'attendais à ce qu'il fasse (a peu de chose pret) un :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 <validator name="maxlength" classname="org.apache.struts.validator.FieldChecks" method="validateMaxLength" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="" msg="errors.maxlength"> <javascript><![CDATA[ function validateMaxLength(form, prefix) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oMaxLength = (prefix == null) ? new maxlength() : eval("new " + prefix + "maxlength()"); for (x in oMaxLength) { var field = form[oMaxLength[x][0]]; if (field.type == 'text' || field.type == 'textarea') { var iMax = parseInt(oMaxLength[x][2]("maxlength")); if (field.value.length > iMax) { if (i == 0) { focusField = field; } fields[i++] = oMaxLength[x][1]; isValid = false; } } } if (fields.length > 0) { setFocus(focusField); alert(fields.join('\n')); } return isValid; }]]> </javascript> </validator>
Y a-t-il une raison à cette complexité ? J'avoue que je suis loin de piger tout ce qui est fait dans cette fonction javascript (et pourtant je n'en suis pas a mes premieres appli web ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <javascript><![CDATA[ function validateMaxLength(form, prefix) { var champVise = /*....*/ return champVise.value.length < max; } </javascript>
Est-ce une question de portabilité inter navigateurs ? (j'ai pas trop l'impression mais bon ...)
Un comportement générique de Struts ? (mais dans quel but ?)
Merci d'avance à toutes les bonnes âmes qui participeront à ce thread![]()
Partager