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 :

Mise à jour impossible dans un modalpanel de richfaces


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 236
    Par défaut Mise à jour impossible dans un modalpanel de richfaces
    Bonjour,
    J'explique globalement ce que je veux exécuter et ensuite mon problème. J'utilise richfaces. J'ai une datatable dans laquelle j'ai une liste d'objet; je choisis un objet pour modification ou suppression. Cet objet est ensuite transmis dans un modal panel qui présente ses différents attributs. Jusque là tous marche bien; quand je choisis de faire une suppression tout fonctionne toujours bien. Mais le problème se situe au niveau de la modification. Il me semble que lorsque j'exécute mon bouton de modification pour effectuer un merge sur l'objet choisit, celui-ci devient un null, donc la modification ne s'effectue pas. Je souhaiterais donc que vous m'aidiez afin d'exécuter proprement la modification.
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Bonjour,

    Il sera difficile de t'aider sans que nous voyons ton code...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 236
    Par défaut
    Bonjour romaintaz,
    Le code étant assez long, je vous envoi les parties concernées par mon problème
    Mes sessions
    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
     
    @Stateless
    public class SuiviParametrageFacadeBean implements SuiviParametrageFacade {
        @PersistenceContext(unitName = "App-ejbPU")
        private EntityManager em;
     
        public SuiviParametrageFacadeBean() {
        }
        ...
        public Bank mergeBank(Bank bank) {
            bank = em.merge(bank);
            return bank;
        }
        ...
        public List<Bank> getBankFindAll() {
            return em.createNamedQuery("Bank.findAll").getResultList();
        }
        ...  
    }
    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
     
    @Stateless
    public class SuiviBanqueBean implements SuiviBanque {
     
        @EJB
        SuiviParametrageFacade suiviPf;
        private Logger logger = Logger.getLogger(SuiviBanqueBean.class.getName());
     
        Long idBank=null;
        Bank bank=null;
        ...
        public Bank modifierBanque(Bank modBank) {
            modBank = suiviPf.mergeBank(modBank);
            logger.log(Level.INFO, "Modification");
            logger.info("Banque modifiée avec succès");
            return modBank;
        } 
        ...
    }
    ManagedBean
    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
     
    public class BanqueManagedBean {
     
        @EJB
        SuiviBanque suiviB;
        @EJB
        SuiviParametrageFacade suiviPf;
        private Bank currentBank;
        private List <Bank> listBank = null;
        private Logger logger = Logger.getLogger(BanqueManagedBean.class.getName());
        ...
        public BanqueManagedBean() {
            this.currentBank = new Bank();
        }
     
        public List<Bank> getListBank() {
                try{
                        listBank = (List<Bank>) suiviPf.getBankFindAll();
                }
                catch(Exception e){
                    e.printStackTrace();
                }
                return listBank;
        }
     
        public Bank getCurrentBank() {
            return currentBank;
        }
     
        public void setCurrentBank(Bank currentBank) {
            this.currentBank = currentBank;
        }
     
        public static Bank afBank = null;
     
        public String affectDelBank(){
            BanqueManagedBean.afBank = currentBank;
            return null;
        }
     
        public String updBank() {
            try{
                suiviB.modifierBanque(currentBank);
                currentBank = new Bank();
            }
            catch(Exception e){
                e.printStackTrace();
            }
            return "parametrage_banque";
        }
     
         public String delBank() {
            try{
                currentBank = BanqueManagedBean.afBank;
                currentBank = (Bank)suiviB.supprimerBanque(currentBank);
                BanqueManagedBean.afBank = null;
            }
            catch(Exception e){
                e.printStackTrace();
            }
            return null;
        }
    }
    Page JSF
    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    ...
    <a4j:region>
    <!-- datatable pour affichage de la liste des objets -->
                                            <rich:dataTable value="#{BanqueManagedBean.listBank}" var="category" rows="5" rowKeyVar="row" ajaxKeys="#{BanqueManagedBean.keys}" id="table"
                    onRowContextMenu="if (row) row.style.backgroundColor='#{a4jSkin.tableBackgroundColor}';
                    this.style.backgroundColor='#F1F1F1'; row=this;
                    #{rich:component('menu')}.show(event,{currentBank:'#{category.idBank}', currentRow:'#{row}'});
                    return false;">
                    <f:facet name="header">
                        <h:outputText value="Liste des banques" />
                    </f:facet>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Code banque" />
                        </f:facet>
                        <h:outputText value="#{category.bankCode}" id="code" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Nom" />
                        </f:facet>
                        <h:outputText value="#{category.bankName}" id="name" />
                    </rich:column>
                    <!-- commandes  pour modification ou suppression -->
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Actions" />
                    </f:facet>
                        <a4j:commandLink ajaxSingle="true" id="editlink" 
                            oncomplete="#{rich:component('editPanel')}.show()">
                            <h:graphicImage value="../images/edit.png" style="border:0" />
                            <f:setPropertyActionListener value="#{category}"
                                                         target="#{BanqueManagedBean.currentBank}" />
                        </a4j:commandLink>
                        <rich:toolTip for="editlink" value="Modifier" />
                        <rich:spacer width="10" />
                        <a4j:commandLink ajaxSingle="true" id="deletelink" action="#{BanqueManagedBean.affectDelBank}"
                            oncomplete="#{rich:component('deletePanel')}.show()">
                            <h:graphicImage value="../images/delete.png" style="border:0" />
                            <f:setPropertyActionListener value="#{category}"
                                                         target="#{BanqueManagedBean.currentBank}" />
                        </a4j:commandLink>
                        <rich:toolTip for="deletelink" value="Supprimer" />
                    </rich:column>
     
                    <f:facet name="footer">
                        <rich:datascroller renderIfSinglePage="false" maxPages="10" />
                    </f:facet>
                </rich:dataTable>
            </a4j:region>
                </h:form>
    						<!-- Modal panel pour la modification -->
                            <rich:modalPanel id="editPanel" autosized="true" width="450">
            <f:facet name="header">
                <h:outputText value="Modifier banque" />
            </f:facet>
            <f:facet name="controls">
                <h:panelGroup>
                    <h:graphicImage value="../images/close.png" id="hidelink"
                        styleClass="hidelink" />
                    <rich:componentControl for="editPanel" attachTo="hidelink"
                        operation="hide" event="onclick" />
                </h:panelGroup>
            </f:facet>
            <h:form>
                <h:panelGrid columns="1">
                    <a4j:outputPanel ajaxRendered="true">
                        <h:panelGrid columns="2">
                            <h:outputText value="Code" />
                            <h:inputText value="#{BanqueManagedBean.currentBank.bankCode}" />
                            <h:outputText value="Nom" />
                            <h:inputText value="#{BanqueManagedBean.currentBank.bankName}" />
                        </h:panelGrid>
                    </a4j:outputPanel>
                    <a4j:commandButton value="Modifer" ajaxSingle="true" action="#{BanqueManagedBean.updBank}"
                                                   oncomplete="#{rich:component('deletePanel')}.hide();" reRender="table" />
     
     
                </h:panelGrid>
            </h:form>
        </rich:modalPanel>
    	<!-- Modal panel pour la suppression -->
        <rich:modalPanel id="deletePanel" autosized="true" width="200">
            <f:facet name="header">
                <h:outputText value="Supprimer la banque?"
                    style="padding-right:15px;" />
            </f:facet>
            <f:facet name="controls">
                <h:panelGroup>
                    <h:graphicImage value="../images/close.png"
                        styleClass="hidelink" id="hidelink2" />
                    <rich:componentControl for="deletePanel" attachTo="hidelink2"
                        operation="hide" event="onclick" />
                </h:panelGroup>
            </f:facet>
            <h:form>
                <table width="100%">
                    <tbody>
                        <tr>
                            <td align="center" width="50%">
                                <a4j:commandButton value="Oui" ajaxSingle="true" action="#{BanqueManagedBean.delBank}"
                                                   oncomplete="#{rich:component('deletePanel')}.hide();" reRender="table" />
                            </td>
                            <td align="center" width="50%"><a4j:commandButton
                                value="Non"
                                onclick="#{rich:component('deletePanel')}.hide();return false;" />
                            </td>
                        </tr>
                    </tbody>
                </table>
            </h:form>
        </rich:modalPanel>
    ...
    Je reste disponible pour tous autres informations supplémentaires. Merci

  4. #4
    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
    Est ce que tu as bien lu la documentation concernant a4j:region??

    enlève a4j:region, et regarde si l'action de modification s'exécute bien..

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 236
    Par défaut
    Bonjour Sniper37,
    Après avoir enlevé a4j:region, j'ai utilisé un logger sur ma méthode de modification. La méthode s'exécute bien, mais il n'y a pas de mise jour dans la base de données. Merci

  6. #6
    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
    l'objet currentBean est bien valorisée à l'intérieur de la méthode?

    assure toi que c'est bien un probleme JSF pas lié à hibernate/JPA ..

Discussions similaires

  1. Mise à jour impossible
    Par zlatan59 dans le forum Access
    Réponses: 1
    Dernier message: 24/07/2006, 10h14
  2. [C# 1.1] Mise à jour cellules dans un datagrid
    Par celos dans le forum Windows Forms
    Réponses: 10
    Dernier message: 14/06/2006, 09h26
  3. Mise à jour impossible
    Par acama dans le forum Access
    Réponses: 1
    Dernier message: 23/12/2005, 19h50
  4. [c#][VS2003]Mise à jour propriété dans le designer
    Par cedkat dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/11/2005, 15h10
  5. Insertion ou mise à jour impossible...
    Par kobe dans le forum Bases de données
    Réponses: 6
    Dernier message: 01/08/2005, 08h37

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