IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Quelques "précisions" sur Struts


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut Quelques "précisions" sur Struts
    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" :
    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>
    ... 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
     
             <javascript><![CDATA[
                function validateMaxLength(form, prefix) {
                    var champVise = /*....*/
                    return champVise.value.length < max;
                }
             </javascript>
    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 ...)
    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

  2. #2
    Membre averti
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Par défaut
    1)
    mettre un oblet en session:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HttpSession session = request.getSession(true);
    session.setAttribute("monObjet", object);
    recuperer l'objet de la session:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClassDeObjet objet =( ClassDeObjet ) session.getAttribute("monObjet");

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut
    merci je sais utiliser l'objet session
    Ce que je demandais c'était un exemple concret dans lequel il y avait besoin de sauvegarder un formbean en session (parce que la, comme ca, je vois pas trop ce à quoi ca peut servir à part "mal utiliser" l'objet session ...)

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Ca peut permettre à un utilisateur qui reviendrait sur une page de saisie, de ne pas avoir à tout ressaisir. Les informations s'afficheraient dans les champs.

  5. #5
    Membre averti
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Par défaut
    Exemple:
    Dans un site d'achat en ligne tant que l'acheteur ne s'est pas deconnecter lui faire savoir ce qu'il a commandé comme article, et lors du payement lui rappeler ce qu'il a dans sa corbeille et calculer le prix de ses articles.

    Exemple
    ramener des information d'une base de donnée et les montrer dans une jsp.
    il faut que ces informations soient dans un scope afin de pouvoir les recuper via struts-tag ou autre dans la jsp

    Exemple:
    utilisation des memes données dans plusieurs jsp ou plusieurs actions. Cela evite de faire appelle plusieurs fois a la meme methode


    ...etc

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut
    ok soit, je valide
    Mais ca m'étonne quand meme... en gros, tout ce que ca nous évite, c'est de faire un request.getSession().setAttribute("monForm", form); dans l'Action ... bizarre =)

Discussions similaires

  1. [Quote] DVP quoté sur Bashfr
    Par Skyounet dans le forum La taverne du Club : Humour et divers
    Réponses: 16
    Dernier message: 26/09/2006, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo