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 :

[RichFaces] modification par un inplaceInput


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut [RichFaces] modification par un inplaceInput
    Bonjour,

    J'ai un soucis dont je ne vois pas l'origine... J'ai développé il y a un moment un système pour pouvoir modifier dans une table une annotation par le biais d'un InplaceInput. Ceci marchait très bien.

    Depuis, de l'eau a coulé sous les ponts. J'ai notemment fait une maj de RichFaces en 3.3.1 et rien ne va plus .

    Voici les bouts de code concerné.

    Colonne du tableau concernée (l'élément est courrierItem) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <rich:column id="mylettranetBoiteReceptionAnnotation" sortBy="#{courrierItem.courrier.annotation}">
          <f:facet name="header">
                 <h:outputText value="#{msg.GLOBAL_libcourt_annotation}"/>
          </f:facet>
          <rich:inplaceInput value="#{courrierItem.courrier.annotation}" selectOnEdit="true" editEvent="onclick" layout="block" >
                 <a4j:support event="onviewactivated" reRender="tableCourrier" action="#{boiteReceptionHandler.annoter}" >
                       <f:setPropertyActionListener value="#{courrierItem}" target="#{boiteReceptionHandler.courrierLigne}" />
                  </a4j:support>
           </rich:inplaceInput>
    </rich:column>
    Dans mon controleur boiteReceptionHandler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void annoter() {
            LOG.debug("annoter()");
            LOG.debug("courrierLigne présent ? " + (courrierLigne != null));
            LOG.debug("annotation : "+courrierLigne.getCourrier().getAnnotation());
            new GestionCourrierProxy().annoterCourrier(courrierLigne.getCourrier());
            LOG.debug("FIN annoter()");
        }
    Fonctionnement : lorsqu'un utilisateur modifie l'inplaceInput, le courrier modifié est envoyé dans la variable courrierLigne du controleur et la méthode annoter est appellée.

    Résultat : la variable est bien settée et la méthode appellée. Cependant, l'objet courrierLigne ne prend aucun compte des modifications apportées dans l'ihm via le InplaceInput. L'annotation reste null alors qu'il a été modifié dans mon navigateur...

    Est-ce que quelqu'un verrait une solution à ce problème ?

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Ce n'est pas très clair, mais je pense que le bean ou tu vérifie l'annotation n'est pas sauvegardé, il ne doit pas être en scope session.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    J'utilise <a4j:keepAlive beanName="boiteReceptionHandler" /> donc normalement le contrôleur n'est pas réinstancié. J'ai vérifié dans les logs et c'est sûr que ce n'est pas le cas.

  4. #4
    Membre très actif Avatar de hazamor
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2008
    Messages : 179
    Par défaut validez l'action d'edtion
    Je croix que tu n'as pas validé l'action de l'édition, tu as exécuté l'evènement "onviewactivated" qui a permet de setter le variable, mais pour "annotation" n'est pas setté car il n'ya pas un evènement qui lance l'affectation.
    tu peut utiliser un autre <a4j:support> ou la methode de binding.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    L'evènement "onviewactivated" set ma variable courrierLigne avec mon courrierItem. Mais annotation est une propriété de mon courrierItem donc il devrait normalement être setté, non ?

    Le problème c'est que courrierLigne est bien setté mais pas avec la valeur mise à jour de mon courrierItem comme si toute modification faite sur la ligne était ignorée...

    Un 2ème setter ne fonctionnera pas car le comportera sera strictement identique (la propriété ne sera pas mise à jour avec la nouvelle valeur).
    Edit : dans le doute j'ai testé et non ça ne marche pas...

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    C'est bon j'ai trouvé. Le problème venait de mon système de pagination.

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

Discussions similaires

  1. Recordset : Modification par Edit
    Par jmde dans le forum VBA Access
    Réponses: 49
    Dernier message: 06/10/2007, 15h39
  2. [CLI] Liste les modifications par date ?
    Par eplic dans le forum CVS
    Réponses: 0
    Dernier message: 03/08/2007, 12h06
  3. pb de modification par formulaire
    Par milielf dans le forum Access
    Réponses: 4
    Dernier message: 23/05/2006, 12h07
  4. champs obligatoires (modification par formulaire)
    Par milielf dans le forum Access
    Réponses: 2
    Dernier message: 22/05/2006, 11h36

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