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 :

[débutante][Struts1.1] Rechargement automatique sur remplissage d'un champ


Sujet :

Struts 1 Java

  1. #1
    Invité
    Invité(e)
    Par défaut [débutante][Struts1.1] Rechargement automatique sur remplissage d'un champ
    Bonjour,

    n'arrivant pas à trouver d'informations probantes sur le sujet, j'aimerais savoir s'il est possible d'effectuer une redirection automatique vers un ActionForward en fonction du nombre de caractères présent dans un champ; et ce sans <html:submit>.


    Le champ sur lequel je veux travailler est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text name="rechForm" property="numCommune" size="3" maxlength="3" />
    J'aimerais faire en sorte que lors de la saisie; dès que 3 caractères sont présents, un Action Forward soit exécuté.


    J'ai trouvé la méthode suivante qui me semble convenir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <logic:redirect name="rechForm" forward="rechercheCommune" property="ActionRecherche"  scope="session" />
    Mais je ne sais pas comment faire pour vérifier qu'il y a bien 3 caractères dans le champ; et ce en automatique depuis ma jsp.


    Si vous avez une idée...

  2. #2
    Membre régulier
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2008
    Messages : 211
    Points : 115
    Points
    115
    Par défaut
    bonjour,
    je sais pas si je vais t'aider ou non mais d'apres ce que j'ai compris tu veux faire un controle sur le champ de saisie, tu peux faire un test avec l'expression reguliere dans ta classe Form
    exemple
    if(!nom.matches("^[a-zA-Z]{3}+$"){
    errors.add(.........")}
    En esperant t'avoir aidé.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ce n'est pas exactement ça.

    En fait je désire remplir automatiquement un autre champ juste à la fin de la saisie dans le champ numCommune.

    Le problème c'est que pour pouvoir le faire, je dois exécuter une requête sur ma base de données et que je ne veux pas d'une "validation" du formulaire par l'utilisateur (via un html:input) mais une "validation" automatique.

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par akd Voir le message
    Ce n'est pas exactement ça.

    En fait je désire remplir automatiquement un autre champ juste à la fin de la saisie dans le champ numCommune.

    Le problème c'est que pour pouvoir le faire, je dois exécuter une requête sur ma base de données et que je ne veux pas d'une "validation" du formulaire par l'utilisateur (via un html:input) mais une "validation" automatique.
    pour repondre exactement a ton besoin, Ajax a été crée.
    Cela va faire appel a la base sans rafraichir ton formulaire.
    donc si le user rentre des caractere(1,2,3,10...), une requete est lancé automatiquement grace a AJAX.
    il y a une ribambelle de framewoks ajax, un simple XmlHttpRequest devrais suffire.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Oui, il faudrait utiliser AJAX, c'est fait pour ça...

    Pour ce qui est de faire un traitement dès que 3 caractères sont saisis, il faudra utiliser un peu de javascript.
    Avec l'évènement onkeypress, tu pourras appeler ce que tu veux au 3ème caractère
    Ci-joint un petit exemple
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    <html>
    <head>
    <script>
    var ie  = document.all;
    var nn6 = document.getElementById && (! ie);
     
    // ------------------------------------ C O N S T A N T S ------------------------------------
     
    var BACKSPACE          = 8;
    var TAB                = 9;
    var ENTER              = 13;
    var SPACE              = 32;
    var PLUS               = 43;
    var COMMA              = 44;
    var MINUS              = 45;
    var POINT              = 46;
    var DBLPOINT           = 58;
    var SLASH              = 47;
    var BACKSLASH          = 92;
     
    /*
    * Extraction du code clavier
    */
    function getKeyPressed(eventObj)
    {
        var keyCode = document.all ? eventObj.keyCode : eventObj.which;
        return keyCode;
    }
     
    /*
     * Traitement de l'entrée clavier
     * Seuls les caractères [0..9] ou [a..z] ou [A..Z] sont valides et peuvent appeler le traitement
     * Backspace est également possible pour supprimer un caractère
     */
    function processAt3(ev)
    {
        var keyCode = getKeyPressed(ev);
        if ( keyCode >= 97 && keyCode <= 122 ) return setTimeout("processValue()", 100);
        if ( keyCode >= 65 && keyCode <= 90 )  return setTimeout("processValue()", 100);
        if ( keyCode >= 48 && keyCode <= 57 )  return setTimeout("processValue()", 100);
     
        if ( keyCode == BACKSPACE ) return true;
        return false;
    }
     
    /*
    * C'est là qu'on fera le traitement au 3 ème caractère...
    */
    function processValue()
    {
        if ( document.forms[0].champ1.value.length >= 3 ) 
        {
            var s = document.forms[0].champ2;
            s.options.length = 0;
            s.options[s.options.length] = new Option("Text 1", "Value 1");
            s.options[s.options.length] = new Option("Text 2", "Value 2");
            s.options[s.options.length] = new Option("Text 3", "Value 3");
            s.focus();
        }
     
        return true;
    }
    </script>
    </head>
     
    <body>
    <form>
        <table>
            <tr>
                <td>Champ 1</td>
                <td><input type="text" name="champ1" maxlength="3" size="3" onkeypress="return processAt3(event)"/>
            </tr>
            <tr>
                <td>Champ 2</td>
                <td>
                    <select name="champ2">
                    </select>
                </td>
            </tr>
     
        </table>
    </form>
     
    </body>
     
    </html>
    A+

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 433
    Points : 112
    Points
    112
    Par défaut
    y a pas mieux que javascript, tu ajoutes un evenement onchange="testeretaille" sur ta zone text .

    et tu developpe une méthode testertaille() dans laquelle tu verifie si la taille de la valeur contenue dans ton champs texte est a 3 tu envoies le formulaire et du coup t'as ta redirection , c'est du développement javascript classique , il n y'a pas besoin d'ajax , parce qu'on ne raffraichit aucun fragment de page à mon avis.

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par akd Voir le message
    ...
    En fait je désire remplir automatiquement un autre champ juste à la fin de la saisie dans le champ numCommune.
    ...
    Ben si, justement

  8. #8
    Membre actif Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Points : 260
    Points
    260
    Par défaut
    J'suis d'accord avec Zalalus si tu fais un document.forms["tonForm"].submit() quand il ya 3 lettres ça roule et pas besoin d'AJAX même si ça irai plus vite.

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par akd Voir le message
    ...
    n'arrivant pas à trouver d'informations probantes sur le sujet, j'aimerais savoir s'il est possible d'effectuer une redirection automatique vers un ActionForward en fonction du nombre de caractères présent dans un champ; et ce sans <html:submit>.
    ...
    Et ben non, il ne veut pas de submit, et ce que tu proposes, c'est un submit...

    Donc, la bonne solution (avec les informations dont nous disposons), c'est AJAX

  10. #10
    Membre actif Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Points : 260
    Points
    260
    Par défaut
    Evidemment s'il ne veut pas de submit c'est Ajax.

Discussions similaires

  1. remplissage cellule automatique sur une donnée saisie !
    Par ptitlulu94 dans le forum Access
    Réponses: 1
    Dernier message: 15/03/2006, 15h06
  2. [débutant] installation automatique sur windows
    Par Biosox dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 28/12/2005, 13h44
  3. Requete et remplissage automatique sur un sitewoueb
    Par pier dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/08/2005, 10h52
  4. Réponses: 7
    Dernier message: 24/01/2005, 11h36
  5. [Débutant]Quelques questions de principe sur l'API win32
    Par silver_dragoon dans le forum Windows
    Réponses: 4
    Dernier message: 19/03/2004, 18h38

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