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

JSF Java Discussion :

Table importante et formulaire HTML


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 36
    Par défaut [Résolu] Table importante et formulaire HTML
    Bonjour,

    Je travaille sur une page permettant de saisir un tableau pouvant atteindre une volumétrie relativement importante (+ d'une centaine de lignes). Je peux donc me retrouver assez facilement avec 400 inputs et combo box (et peut être radio boutons) sur ma page, et là, ça pédale dans la semoule.
    Donc je cherche à réduire le nombre de données à mettre à jour au minimum, idéalement uniquement les nouvelles données ou celles modifiées.

    Pour le moment je suis parti sur une solution javascript pour ne soumettre que les inputs modifiés :

    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
                            /**
                             * disableUnmodifiedInputs
                             *
                             * Disable the input fields that haven't been modified by the user, and thus that don't need to update the associated bean.
                             */
                            function disableUnmodifiedElements()
                            {
                                var form = document.getElementById( 'TPZBodyForm' );
     
                                for ( i = 0; i != form.elements.length; i++ )
                                {
                                    node = form.elements[i];
                                    if ( !isInputModified( node ) )
                                    {
                                        if ( node.tagName == 'input' )
                                        {
                                            // inputText components.
                                            if ( node.type == 'text' )
                                            {
                                                node.disabled = true;
                                            }
                                            // selectOneRadio components.
                                            else if ( node.type == 'radio' )
                                            {
                                                node.disabled = true;
                                            }
                                        }
                                        // selectOneMenu components.
                                        else if ( node.tagName == 'select' )
                                        {
                                            node.disabled = true;
                                        }
                                    }
                                }
                            }
    Le problème c'est que ça ne marche pas dans le cas des combo box :/
    Et même si je laisse les combos être soumises à chaque fois, j'ai peur d'avoir des problèmes de performances vu la volumétrie.

    Je pensais aussi dupliquer sur le seveur mon bean de données, mettre tous mes champs en immediate et utiliser mon bouton de submit pour écraser les anciennes valeurs. Après je ne suis pas persuadé que ça rende terrible :/
    Est ce que quelqu'un a déjà été confronté au même problème et/ou aurait une solution ou une piste à me proposer ?

    Thomas

    PS: Je ne peux pas paginer ma table
    PPS: JSF 1.2 et RichFaces 1.3.4.

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 36
    Par défaut
    Bon ben je viens de tomber là dessus :

    Some JSF components, such as <h:selectOneMenu> do recognize the missing data in the request map value as a null value and try to pass the validation process with a failed result.
    Donc si je reste avec ma solution javascript, je vais être obligé de renvoyer les combos à chaque fois.
    Une piste de moins... :/

    Thomas

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 36
    Par défaut
    Résolu de manière acceptable en utilisant le composant support de RichFaces (et au passage les inplaceInput et inplaceSelect de la dernière 3.2.0) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <rich:inplaceInput value="#{element.string}" showControls="true" >
        <a4j:support event="onviewactivated" ajaxSingle="true" />
    </rich:inplaceInput>
     
    <rich:inplaceSelect value="#{element.type}" converter="MyConverter" showControls="true" openOnEdit="true" >
        <a4j:support event="onviewactivated" ajaxSingle="true" />
        <f:selectItems value="#{MyTable.availableTypes}" />
    </rich:inplaceSelect>
    En utilisant ça, seul l'attribut string de l'élément correspondant à la ligne utilisée est mis à jour.
    On peut bien sûr remplacer le inplaceInput par un inputText classique mais il faut passer utiliser onchange à la place de onviewactivated. Même chose pour le inplaceSelect.

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 36
    Par défaut
    Hop, la suite, des fois que quelqu'un retombe là dessus un jour :
    Finalement après avoir pas mal galèré, le tableau restait inexploitable.
    Donc comme c'est une partie relativement indépendante du reste, on va la passer en GWT.

    Et mes premières impressions sur GWT :
    - ça marche aussi bien que JSF
    - c'est un peu plus long à mettre en place (java au lieu de XML, dur...)
    - c'est moins buggé (toujours eu des trucs qui me fonctionnaient pas correctement avec les composants JSF/RichFaces: des boutons qui ne fonctionnaient pas à cause d'un changeActionListener défini 50 composants au dessus et qui n'avait rien à voir avec mon bouton, des liens qui marchent une fois sur deux, etc...)
    - tout est super fluide ! C'est impressionnant.

    Voila, c'était mes 2 centimes d'euro
    Et franchement, avec un peu de recul, je trouve que JSF c'est quand même pas terrible.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à jour TABLE PHP via formulaire HTML
    Par Simouha dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/07/2014, 13h25
  2. Comment utiliser la meme table pour plusieurs formulaires
    Par pacodelareunion dans le forum Access
    Réponses: 5
    Dernier message: 26/10/2005, 15h17
  3. perl et formulaire html.
    Par nah_wah dans le forum Web
    Réponses: 6
    Dernier message: 23/09/2005, 19h38
  4. Une table --> 2 sous formulaires d'édition ?
    Par Neilos dans le forum IHM
    Réponses: 2
    Dernier message: 20/06/2005, 16h10
  5. [POO] Formulaire HTML + fonction JS = Erreur
    Par bdaboah dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/11/2004, 21h59

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