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 :

CommandButton: Effectuer action avant le chargement de la Datatable


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut CommandButton: Effectuer action avant le chargement de la Datatable
    Bonjour, j'ai une question pourtant sur le cycle de vie pour une action.

    Actuellement, j'ai une rich:datatable qui est remplie au chargement de la page.
    Dans cette datatable, chaque cellule est composée d'une CheckBox.

    J'ai aussi un bouton h:commandButton "Apply Change" à l'extérieur de ce tableau.
    Le tout dans une h:form

    L'action "Apply Change" va sauvegarder dans la base de données les changements effectués dans le tableau.

    Mon problème est que lorsque j'appuie sur le bouton et il réappelle la fonction peuplant le tableau avant d'avoir sauver les changements dans la base de données.

    Donc, j'ai mon tableau qui ne comporte pas toutes mes modifications mais celles-ci sont bien répercutées dans la base de données.

    J'ai essayé d'ajouter à mon h:commandButton, l'attribut "Immediate" à "True". Mais çà ne fonctionne quand même pas.

    Merci d'avance pour votre aide.

    Julien Garcia Gonzalez

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Fais nous voir le code de ta page jsf et le managedBean associé.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    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
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:rich="http://richfaces.org/rich"
          xmlns:a4j="http://richfaces.org/a4j"
          xmlns:f="http://java.sun.com/jsf/core"
          template="../resources/templates/template.xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:c="http://java.sun.com/jsp/jstl/core">
     
        <ui:define name="content">
     
        </ui:define>
     
        <ui:define name="details">
     
           <h:form id="form">
               <rich:dataTable value="#{intervenantAdministration.availabilityTeacherRows}" var="availability">
                    <f:facet name="header">
                        <rich:columnGroup>
                            <rich:column rowspan="2">
                            </rich:column>
                            <c:forEach items="#{intervenantAdministration.daysOfWeek}" var="dayOfWeek" >
                                <rich:column>
                                    <h:outputText value="#{dayOfWeek}" />
                                </rich:column>
                            </c:forEach>
                        </rich:columnGroup>
                    </f:facet>
                    <rich:column>
                        <h:outputText value="#{availability.heure} :00 - #{availability.heure+1}:00" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.mondayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.tuesdayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.thursdayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.wednesdayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.fridayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.saturdaydayAvailable}" />
                    </rich:column>
     
                </rich:dataTable>
     
               <h:commandButton action="#{intervenantAdministration.applyChanges}" value="Sauvegarder les changements" immediate="true" />
           </h:form>
        </ui:define>
     
    </ui:composition>
    managedbean intervenantAdministration:
    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
    115
    116
    117
    118
    119
    120
    121
    @ManagedBean
    @RequestScoped
    public class IntervenantAdministration {
     
        private ArrayList<AvailabilityTeacherRow> availabilities;
        private ArrayList<Calendar> days = new ArrayList<Calendar>();
        private int idPerson;
     
        @EJB
        private PersonFacadeLocal personFL;
     
        // <editor-fold defaultstate="collapsed" desc="Properties">
        public int getIdPerson() {
            return idPerson;
        }
     
        public void setIdPerson(int idPerson) {
            this.idPerson = idPerson;
        }
     
        public ArrayList<Calendar> getDays() {
            return days;
        }
     
        public void setDays(ArrayList<Calendar> days) {
            this.days = days;
        }
     
        public ArrayList<AvailabilityTeacherRow> getAvailabilities() {
            return availabilities;
        }
     
        public void setAvailabilities(ArrayList<AvailabilityTeacherRow> availabilities) {
            this.availabilities = availabilities;
        }// </editor-fold>
     
     
        /** Creates a new instance of IntervenantAdministration */
        public IntervenantAdministration() {
     
            days = new ArrayList<Calendar>();
            Calendar cal = GregorianCalendar.getInstance();
            cal.add(Calendar.DAY_OF_MONTH, -(cal.get(Calendar.DAY_OF_WEEK)-Calendar.MONDAY));
     
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
           days.add(Utils.copyCalendar(cal));
     
           availabilities = new ArrayList<AvailabilityTeacherRow>();
     
     
           //TODO: To Remove
           idPerson = 3;
        }
     
        public ArrayList<String> getDaysOfWeek(){
            ArrayList<String> daysOfWeek = new ArrayList<String>();
     
            daysOfWeek.add("Lundi " + days.get(0).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Mardi " + days.get(1).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Mercredi " + days.get(2).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Jeudi " + days.get(3).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Vendredi " + days.get(4).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Samedi " + days.get(5).get(Calendar.DAY_OF_MONTH));
     
            return daysOfWeek;
        }
     
        public ArrayList<AvailabilityTeacherRow> getAvailabilityTeacherRows(){
            availabilities = new ArrayList<AvailabilityTeacherRow>();
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),9)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),10)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),11)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),13)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),14)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),15)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),16)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),17)));
     
            for(AvailabilityTeacherRow item: availabilities){
                item.manageAvailability();
            }
     
            return availabilities;
        }
     
        @EJB
        CalendrierFacadeLocal calendrierFL;
     
        @EJB
        AvailabilityOfInstructorFacadeLocal availabilityOfInstructorFL;
     
        @EJB
        AvailabilityOfTeacherFacadeLocal availabilityOfTeacherFL;
     
        public String applyChanges(){
            for(AvailabilityTeacherRow item: availabilities){
                item.updateStatus(calendrierFL,availabilityOfInstructorFL,availabilityOfTeacherFL);
            }
     
            return null;
        }

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    Chose plus étrange encore, lorsque je fais la modification, elle s'inscrit bien dans la base de données mais ne s'affiche pas sur ma page.
    Je relance l'application (mode normal) via netbeans la donnée ne s'affiche toujours pas, par contre il faut que je relance l'application en debug pour voir s'afficher ma donnée.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Citation Envoyé par garciajulien Voir le message
    J'ai essayé d'ajouter à mon h:commandButton, l'attribut "Immediate" à "True". Mais çà ne fonctionne quand même pas.
    L'usage que tu en fais est inapproprié. Lisons la doc:
    The immediate attribute is a boolean flag indicating that component events should be sent to registered event listeners immediately rather than after the validation phase of the JSF request processing lifecycle. The immediate flag allows you bypass JSF validation for a particular component.
    Autrement dit, l'utilisation de cet attribut permet de sauter la phase de validation du modèle. Par conséquent, les contraintes que tu auras pu placer au moyen d'annotations (e.g @NotNull) dans les classes du modèle ne seront pas vérifiées et ne bloqueront pas la soumission du formulaire. C'est tout.


    Pour revenir à ton problème, tu peux toujours essayer de redéclencher un refresh de la datatable après la fin de son rechargement

  6. #6
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    En effet immediate= "true" a pour seul role d'outrepasser les validauteurs de formulaires (comme les required = "true", etc...)
    Mets ton bean en sessionScoped et mets un reRender = "id_de_ton_datatable_" dans ton commandButton. Ca marchera mieux après.

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    ... mets un reRender = "id_de_ton_datatable_" dans ton commandButton. Ca marchera mieux après.
    Le rerender, il n'y en a pas sur un h:commandButton mais plutot sur un a4j:CommandButton.

    Le remplace le h:commandbutton par un a4j:commandbutton?
    d'ailleurs dans la version de richfaces que j'utilise a4j:commandbutton n'a pas d'attribut reRender.

    Voila la ligne modifiée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <a4j:commandButton action="#{intervenantAdministration.applyChanges}" value="Sauvegarder les changements" render="data" />

  8. #8
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Et alors?

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    Excuse-moi, oublié de dire que çà ne fonctionne pas il me refresh la page, il m'ajoute les data dans la bd mais ne me les met pas dans ma table.

  10. #10
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Si tu utilises un a4j:commandButton, il vaut mieux aussi utiliser un a4j:form. Richfaces est très puissant, mais malheureusement pas magique.

    Quelle est d'ailleurs cette bizarre version de RF pour laquelle tu n'as pas d'attribut reRender sur les a4j:commandButton?

    Est-ce que par contre tu as un oncomplete sur ces boutons? ça pourrait servir

  11. #11
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Refais nous voir ton managedBean et ton formulaire, je suis sur que t'as zappé un truc de ce qu'on t'a dit de faire

  12. #12
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    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
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package com.safedriving.managedbeans;
     
    import com.safedriving.model.Calendrier;
    import com.safedriving.sessionbean.AvailabilityOfInstructorFacadeLocal;
    import com.safedriving.sessionbean.AvailabilityOfTeacherFacadeLocal;
    import com.safedriving.sessionbean.CalendrierFacadeLocal;
    import com.safedriving.sessionbean.PersonFacadeLocal;
    import com.safedriving.tools.AvailabilityTeacherRow;
    import com.safedriving.tools.Utils;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import javax.ejb.EJB;
    import javax.faces.context.FacesContext;
     
    /**
     *
     * @author j.a.garcia.gonzalez
     */
    public class IntervenantAdministration {
     
        private ArrayList<AvailabilityTeacherRow> availabilities;
        private ArrayList<Calendar> days = new ArrayList<Calendar>();
        private int idPerson;
     
        @EJB
        private PersonFacadeLocal personFL;
     
        // <editor-fold defaultstate="collapsed" desc="Properties">
        public int getIdPerson() {
            return idPerson;
        }
     
        public void setIdPerson(int idPerson) {
            this.idPerson = idPerson;
        }
     
        public ArrayList<Calendar> getDays() {
            return days;
        }
     
        public void setDays(ArrayList<Calendar> days) {
            this.days = days;
        }
     
        public ArrayList<AvailabilityTeacherRow> getAvailabilities() {
            return availabilities;
        }
     
        public void setAvailabilities(ArrayList<AvailabilityTeacherRow> availabilities) {
            this.availabilities = availabilities;
        }// </editor-fold>
     
     
        /** Creates a new instance of IntervenantAdministration */
        public IntervenantAdministration() {
     
            days = new ArrayList<Calendar>();
            Calendar cal = GregorianCalendar.getInstance();
            cal.add(Calendar.DAY_OF_MONTH, -(cal.get(Calendar.DAY_OF_WEEK)-Calendar.MONDAY));
     
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
            days.add(Utils.copyCalendar(cal));
     
            cal.add(Calendar.DAY_OF_MONTH, 1);
     
           days.add(Utils.copyCalendar(cal));
     
           availabilities = new ArrayList<AvailabilityTeacherRow>();
     
     
           //TODO: To Remove
           idPerson = 3;
        }
     
        public ArrayList<String> getDaysOfWeek(){
            ArrayList<String> daysOfWeek = new ArrayList<String>();
     
            daysOfWeek.add("Lundi " + days.get(0).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Mardi " + days.get(1).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Mercredi " + days.get(2).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Jeudi " + days.get(3).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Vendredi " + days.get(4).get(Calendar.DAY_OF_MONTH));
            daysOfWeek.add("Samedi " + days.get(5).get(Calendar.DAY_OF_MONTH));
     
            return daysOfWeek;
        }
     
        public ArrayList<AvailabilityTeacherRow> getAvailabilityTeacherRows(){
            availabilities = new ArrayList<AvailabilityTeacherRow>();
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),9)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),10)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),11)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),13)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),14)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),15)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),16)));
            availabilities.add(new AvailabilityTeacherRow(personFL.find(idPerson), new Calendrier(days.get(0),17)));
     
            for(AvailabilityTeacherRow item: availabilities){
                item.manageAvailability();
            }
     
            return availabilities;
        }
     
        @EJB
        CalendrierFacadeLocal calendrierFL;
     
        @EJB
        AvailabilityOfInstructorFacadeLocal availabilityOfInstructorFL;
     
        @EJB
        AvailabilityOfTeacherFacadeLocal availabilityOfTeacherFL;
     
        public String applyChanges(){
            FacesContext cf = FacesContext.getCurrentInstance();
     
            String row = cf.getExternalContext().getRequestParameterMap().get("row");
            String day = cf.getExternalContext().getRequestParameterMap().get("day");
            for(AvailabilityTeacherRow item: availabilities){
                item.updateStatus(calendrierFL,availabilityOfInstructorFL,availabilityOfTeacherFL);
            }
     
            return null;
        }
     
     
    }
    et le xhtml:

    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
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:rich="http://richfaces.org/rich"
          xmlns:a4j="http://richfaces.org/a4j"
          xmlns:f="http://java.sun.com/jsf/core"
          template="../resources/templates/template.xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:c="http://java.sun.com/jsp/jstl/core">
     
        <ui:define name="content">
     
        </ui:define>
     
        <ui:define name="details">
     
           <h:form id="form">
               <rich:dataTable id="data" value="#{intervenantAdministration.availabilityTeacherRows}" var="availability" iterationStatusVar="iterAvailability" >
     
                   <f:facet name="header">
                        <rich:columnGroup>
                            <rich:column rowspan="2">
                            </rich:column>
                            <c:forEach items="#{intervenantAdministration.daysOfWeek}" var="dayOfWeek" >
                                <rich:column>
                                    <h:outputText value="#{dayOfWeek}" />
                                </rich:column>
                            </c:forEach>
                        </rich:columnGroup>
                    </f:facet>
                    <rich:column>
                        <h:outputText value="#{availability.heure} :00 - #{availability.heure+1}:00" />
                    </rich:column>
                    <rich:column>
     
                        <h:selectBooleanCheckbox value="#{availability.mondayAvailable}" >
                            <f:param value="1" name="day"></f:param>
                            <f:param value="#{iterAvailability.index}" name="row"></f:param>
                        </h:selectBooleanCheckbox>
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.tuesdayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.wednesdayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.thursdayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.fridayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.saturdaydayAvailable}" />
                    </rich:column>
     
                </rich:dataTable>
               <a4j:commandButton action="#{intervenantAdministration.applyChanges}" value="Sauvegarder les changements" render="data" />
           </h:form>
        </ui:define>
     
    </ui:composition>
    je vais tester a4j:form, j'ai la version 4 je pense et oui j'ai oncomplete.

    Merci en tout cas

  13. #13
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /**
     *
     * @author j.a.garcia.gonzalez
     */
    public class IntervenantAdministration {
    Je ne vois rien sur l'entete de ta classe

  14. #14
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    oui "l'architecte" du projet voulais que je mette tout dans le face-config.xml

    voila les lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <managed-bean>
            <managed-bean-name>intervenantAdministration</managed-bean-name>
            <managed-bean-class>com.safedriving.managedbeans.IntervenantAdministration</managed-bean-class>
     
            <managed-bean-scope>session</managed-bean-scope>
            </managed-bean>

  15. #15
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Et ta vue jsp

  16. #16
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    Qu'est-ce que vous entendez par "Vue JSP"?

  17. #17
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Salut

    si tu pars sur le a4j:form, tu peux insérer le code suivant quelque part à l'intérieur (genre avant la déclaration de la datatable):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:jsFunction name="forceRender" reRender="data"/>
    Ensuite il faut ajouter à ton a4j:commandButton un attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oncomplete="forceRender();"
    Ceci aura pour effet de forcer ta datatable à se rafraichir après la fin de la requête au serveur. Si même là ça ne fonctionne pas, c'est que le problème ne vient pas que de JSF.

    Bon ça fait un peu bidouille par contre, mais si ça peut dépanner...

  18. #18
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    Je viens de tester, ca ne fonctionne malheureusement pas, car je n'ai pas a4j:form dans ma librarie.

  19. #19
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Fais nous revoir le code xhtml qui marche pas.

  20. #20
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    Voila :

    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
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:rich="http://richfaces.org/rich"
          xmlns:a4j="http://richfaces.org/a4j"
          xmlns:f="http://java.sun.com/jsf/core"
          template="../resources/templates/template.xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:c="http://java.sun.com/jsp/jstl/core">
     
        <ui:define name="content">
     
        </ui:define>
     
        <ui:define name="details">
     
           <h:form id="form">
               <rich:dataTable id="data" value="#{intervenantAdministration.availabilityTeacherRows}" var="availability" iterationStatusVar="iterAvailability" >
     
                   <f:facet name="header">
                        <rich:columnGroup>
                            <rich:column rowspan="2">
                            </rich:column>
                            <c:forEach items="#{intervenantAdministration.daysOfWeekInString}" var="dayOfWeek" >
                                <rich:column>
                                    <h:outputText value="#{dayOfWeek}" />
                                </rich:column>
                            </c:forEach>
                        </rich:columnGroup>
                    </f:facet>
                    <rich:column>
                        <h:outputText value="#{availability.heure} :00 - #{availability.heure+1}:00" />
                    </rich:column>
                    <rich:column>
     
                        <h:selectBooleanCheckbox value="#{availability.mondayAvailable}" >
                        </h:selectBooleanCheckbox>
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.tuesdayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.wednesdayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.thursdayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.fridayAvailable}" />
                    </rich:column>
                    <rich:column>
                        <h:selectBooleanCheckbox value="#{availability.saturdaydayAvailable}" />
                    </rich:column>
     
                </rich:dataTable>
               <a4j:commandButton action="#{intervenantAdministration.applyChanges}" value="Sauvegarder les changements"  />
           </h:form>
        </ui:define>
     
    </ui:composition>
    Merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/04/2015, 13h03
  2. Message Loading avant le chargement de l'action struts
    Par jaljal dans le forum Struts 1
    Réponses: 3
    Dernier message: 11/12/2009, 12h30
  3. [Debutant][Bouton Radio]action avant un clic
    Par jazer dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/10/2006, 15h18
  4. Réponses: 4
    Dernier message: 31/08/2006, 12h25
  5. [resolulu][SWING] action avant de fermer une JFrame
    Par berg dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 18/06/2006, 00h15

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