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

Développement Web en Java Discussion :

[Javaa EE] Problème modification ligne datatable


Sujet :

Développement Web en Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Collégien
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 10
    Points
    10
    Par défaut [Javaa EE] Problème modification ligne datatable
    Bjr à tous.
    J'ai re-écris mon post pour plus de clarté.
    Je suis debutant , j'ai generé un projet CRUD par Netbeans 6 avec bdd mysql pour gerer un stock.
    Mais quand j'edite un ligne d'une facture fournisseur pour le modifier: je tombe toujours su la meme ligne, en l'occurence la 1ère ligne.
    Soit, ma methode est inadequate , soit mon code bug. Merci de m'aider.
    Mon bout de code est ci bas posté.Les etapes du programme sont numerotés de maniere chronologique selon les fichiers concernés..
    Ma methode consite à cliquer sur les boutons( ecritures soulignées en gras ) selon la numérotation de ces fichiers:
    voici mes fichiers :
    1-livraisonfournisseur/list.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
    <h:panelGroup rendered="#{livraisonfournisseurController.items.rowCount > 0}">
     <p:dataTable value="#{livraisonfournisseurController.items}" var="item" 
                                     paginator="true" rows="10"  
                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                     rowsPerPageTemplate="5,10,15">                             <p:column sortBy="#{item.codeLivrf}" headerText=                          bundle.ListLivraisonfournisseurTitle_codeLivrf}"/>                          <h:outputText value="#{item.codeLivrf}"/>
                            </p:column>
                            <p:columnheaderText=  ="#{bundle.ListLivraisonfournisseurTitle_dateLivrf}"/>
                                <h:outputText value="#{item.dateLivrf}">
                                    <f:convertDateTime pattern="MM/dd/yyyy" />
                                </h:outputText>
                            </p:column>
                            <p:column sortBy="#{item.idAct}" headerText="id Act">
      <h:outputText value="#{item.idAct}"/>
                            </p:column>
                            <p:columnheaderText=  ="#{bundle.ListLivraisonfournisseurTitle_actType}"/>
          <h:outputText value="#{item.codeDep}"/>
                            </p:column>
                            <p:columnheaderText=  ="&nbsp;"/>
                                <h:commandLink action="#{livraisonfournisseurController.prepareView}" value="#{bundle.ListLivraisonfournisseurViewLink}"/>
                                <h:outputText value=" "/>
                                <h:commandLink action="#{livraisonfournisseurController.prepareEdit}" value="#{bundle.ListLivraisonfournisseurEditLink}"/>                            <h:outputText value=" "/>
                                <h:commandLink action="#{livraisonfournisseurController.destroy}" value="#{bundle.ListLivraisonfournisseurDestroyLink}"/>
                            </p:column>
                        </p:dataTable>
                    </h:panelGroup>
    2-livraisonforunisseurcontroller.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public String prepareEdit() {
            current = (Livraisonfournisseur) getItems().getRowData();
            selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
           // return "Edit";
            recreateModel();
            return "/entreestock/Create";
        }
    3-entreestock.create.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
    <h:panelGroup id="print">
                <h:form>
                   <p:dataTable  value="#{entreestockController.details}" var="item" id="details"> 
                    <!-- border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px">  -->
                    <p:column style="width: 138px" >
                         <h:outputText style="width: 138px" value="#{item.codeProd}" />
                            </p:column>
                            <p:column style="width: 185px; right:auto">
                               <h:outputText style="width: 185px; right:auto" value="#{item.qteRecue}"  styleClass="jsfcrud_even_rowright"/>
                            </p:column>
                             <p:column style="width: 185px" >
                                <h:outputText style="width: 185px" value="#{item.snProdestock}"  styleClass="jsfcrud_even_rowright"/>
                            </p:column>
                       <p:column >
                         <h:commandLink action="#{entreestockController.prepareDetailsEdit()}" value="Edit" immediate="true"/>                       </p:column>
                       </p:dataTable>
                    </h:form>
              </h:panelGroup>
    4-entreestockcontroller.java:
    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
     
     public String prepareDetailsEdit() {
           recreateModel();
         current = (Entreestock)getDetails().getRowData();
             return "Edit";
        }
     public DataModel getDetails() {
            recreateModel();
            if(details==null){
                details=new ListDataModel();
             details.setWrappedData(detailFacture());
            }
            return details;
        }
    private void recreateModel() {
              details=null;
            items = null;
            dataItem=null;
           }
     public List<Entreestock> detailFacture(){
            try {
                String a= "select e from Entreestock e where"
                        + " e.codeLivrf =:num";
                return  getFacade().ListDetailsFacture(a, "num", CodeLF);
            } catch (Exception ex) {
                Logger.getLogger(EntreestockController.class.getName()).log(Level.SEVERE, null, ex);
           return null;
            }
        }
        public String update() {
            try {
                   getFacade().edit(current);
                JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("EntreestockUpdated"));
               // return "View";
                return "Create";
            } catch (Exception e) {
                JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
                return null;
            }
        }
    5-entreestock:edit.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
      <h:form>
                    <h:panelGrid columns="2">
                        <h:outputLabel value="#{bundle.EditEntreestockLabel_numLigneblf}" for="numLigneblf" />
                        <h:inputText disabled="true" id="numLigneblf" value="#{entreestockController.selected.numLigneblf}" title="#{bundle.EditEntreestockTitle_numLigneblf}" required="true" requiredMessage="#{bundle.EditEntreestockRequiredMessage_numLigneblf}"/>
                        <h:outputLabel value="#{bundle.EditEntreestockLabel_qteRecue}" for="qteRecue" />
                        <h:inputText id="qteRecue" value="#{entreestockController.selected.qteRecue}" title="#{bundle.EditEntreestockTitle_qteRecue}" required="true" requiredMessage="#{bundle.EditEntreestockRequiredMessage_qteRecue}"/>
                        <h:outputLabel value="#{bundle.EditEntreestockLabel_snProdestock}" for="snProdestock" />
                        <h:inputText id="snProdestock" value="#{entreestockController.selected.snProdestock}" title="#{bundle.EditEntreestockTitle_snProdestock}" required="true" requiredMessage="#{bundle.EditEntreestockRequiredMessage_snProdestock}"/>
                        <h:outputLabel value="#{bundle.EditEntreestockLabel_codeProd}" for="codeProd" />
                        <h:selectOneMenu disabled="true" id="codeProd" value="#{entreestockController.selected.codeProd}" title="#{bundle.EditEntreestockTitle_codeProd}" required="true" requiredMessage="#{bundle.EditEntreestockRequiredMessage_codeProd}">
                            <f:selectItems value="#{produitsController.itemsAvailableSelectOne}"/>
                        </h:selectOneMenu>
                        <h:outputLabel value="#{bundle.EditEntreestockLabel_codeLivrf}" for="codeLivrf" />
                        <h:selectOneMenu disabled="true" id="codeLivrf" value="#{entreestockController.selected.codeLivrf}" title="#{bundle.EditEntreestockTitle_codeLivrf}" required="true" requiredMessage="#{bundle.EditEntreestockRequiredMessage_codeLivrf}">
                            <f:selectItems value="#{livraisonfournisseurController.itemsAvailableSelectOne}"/>
                        </h:selectOneMenu>
                    </h:panelGrid>
           <p:commandButton type="submit" action="#{entreestockController.update}" value="Enregistrer" style="width: 200px" ajax="false"/>                  </h:form>
    Desolé pour la longueur du code, toute aide est le bienvenu.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Collégien
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Rebonjour:
    J'ai localisé mon probleme: c'est la variable current qu'il faut redefinir.
    La methode entreestockController.prepareDetailsEdit() fait reference à la variable current qui est declarée de la sorte au niveau de entreestockcontroller.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     public Entreestock getSelected() {
            if (current == null) {
                current = new Entreestock();
                selectedItemIndex = -1;
            }
            return current;
         }
    En effet lorque je remplace current par une nouvelle variable alpha, l'edition de la ligne de la facture fournisseur affiche des donnees vides:

    Comment peut on re-instancier la variable current tout en sachant que:
    • current est une entreestock,

    • dans la base de donnees, il existe plusieurs factures fournisseurs qui ont chacune une liste d'entreestock,

    • la listeddatamodel getDetails() fait reference uniquement aux entreestocks d'une facture fournisseur distinguée par son numero

    Aidez moi SVP.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Collégien
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Rebonjour encore une fois.
    J'ai finalement resolu mon pb comme un grand.
    Il fallait redefinir la variable current de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     context= FacesContext.getCurrentInstance();
          current = (Entreestock) context.getApplication().evaluateExpressionGet(context, "#{item}", Entreestock.class);
    avec "#{item}" = iteration de la datatable de 3-entreestock.create.jsf.

    Merci à tous, mon programme marche

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/07/2006, 09h15
  2. problème flexgrid lignes fixes
    Par sab_etudianteBTS dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 29/06/2006, 08h48
  3. Problème : modification d'un paramètre sous IE
    Par insane_fr dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 27/05/2006, 16h49
  4. Réponses: 6
    Dernier message: 15/02/2006, 14h02
  5. Problème extraire ligne d'une table
    Par bubi dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/11/2005, 10h35

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