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 :

Effacer un enregistrement à l'aide d'un bouton


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut Effacer un enregistrement à l'aide d'un bouton
    Bonjour,

    J'ai un problème lors de la suppression d'un objet :

    Nom : delete.JPG
Affichages : 394
Taille : 57,8 Ko

    Mon Managed Bean:
    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
    public class RatManagedBean implements Serializable {
     
        /** The Constant serialVersionUID. */
        private static final long serialVersionUID = 1L;
     
        @Autowired
        RatService ratService;
     
        private List<RatEntity> ratList;
        private String ratType;
        private Integer ratCode;
        private RatEntity selectedRat;
     
        @PostConstruct
        public void init() throws DAOException {
            System.out
                    .println("********************* in*****************************it*************");
     
            ratList = new ArrayList<RatEntity>();
            ratList.addAll(ratService.findAllRats());
     
        }
     
        public String addRat() throws DAOException {
            RequestContext context = RequestContext.getCurrentInstance();
            RatEntity rat = new RatEntity(ratCode, ratType);
            try {
                ratService.insertRat(rat);
                reset();
                ratList.add(rat);
                return "index.xhtml ?faces-redirect=true";
            } catch (DAOException e) {
                FacesContext context1 = FacesContext.getCurrentInstance();
                context1.addMessage(null, new FacesMessage("Erreur!",
                        "L'ajout du RAT a échoué"));
                context.addCallbackParam("add", false);
                e.printStackTrace();
            }
            return "error.xhtml ?faces-redirect=true";
        }
     
     
        public void deleteRat(RatEntity selectedRat) throws DAOException{
     
            try {
                ratService.deleteRat(selectedRat);
                ratList.remove(selectedRat);
            } catch (DAOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
     
        }
     
        public List<RatEntity> getRatList() {
            return ratList;
        }
     
        public void setRatList(List<RatEntity> ratList) {
            this.ratList = ratList;
        }
     
        public String getRatType() {
            return ratType;
        }
     
        public void setRatType(String ratType) {
            this.ratType = ratType;
        }
     
        public Integer getRatCode() {
            return ratCode;
        }
     
        public void setRatCode(Integer ratCode) {
            this.ratCode = ratCode;
        }
     
        public RatEntity getSelectedRat() {
            return selectedRat;
        }
     
        public void setSelectedRat(RatEntity selectedRat) {
            this.selectedRat = selectedRat;
        }
     
        /**
         * reset Add form method
         */
        public void reset() {
            this.setRatType("");
        }
    }
    ma page 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
    62
    63
    64
    65
    66
    67
    <h:form id="form">
                <p:dataTable id="ratTable" var="rat" value="#{ratMB.ratList}" styleClass="userDataTableStyle"
                            paginator="true" rows="10" selection="#{ratMB.selectedRat}"  rowKey="#{rat.code}">
                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                             rowsPerPageTemplate="5,10">
                <f:facet name="header">
                        Liste des Radio Acess Type
                    </f:facet>
                     <p:column selectionMode="single" style="width:16px;text-align:center"/>
                        <p:column headerText="Code du Rat" sortBy="#{rat.code}">
                <h:outputText value="#{rat.code}"></h:outputText>
                </p:column>
                <p:column headerText="Type du RAT" sortBy="#{rat.type}">
                <h:outputText value="#{rat.type}"></h:outputText>
                </p:column>
     
                <f:facet name="footer">
                    <p:commandButton value="Ajouter" oncomplete="newRatDialog.show()" icon="ui-icon-star" title="Ajouter un nouvel Radio Access Type" />
                    <p:commandButton value="Supprimer" onclick="confirmation.show()" update="ratTable" icon="ui-icon-trash"/>
                </f:facet>
            </p:dataTable> 
    </h:form>
            <p:dialog header="Créer un nouvel Radio Access Type" widgetVar="newRatDialog" resizable="false" id="newRatDialog">
                <h:form id="newdirecForm">
                    <p:panelGrid id="displayNewRat" columns="4" style="margin:0 auto;">
                        <h:outputText value="Code :"></h:outputText>
                        <p:inputText value="#{ratMB.ratCode}" />
                        <h:outputText value="Type :"></h:outputText>
                        <p:inputText value="#{ratMB.ratType}" />
     
     
                        <f:facet name="footer">
                            <p:commandButton value="Valider" update=":form:ratTable"
                                oncomplete=" handleSubmitRequest(xhr, status, args, 'newActiviteDlg','newdirecForm');"
                                action="#{ratMB.addRat}" />
                            <p:commandButton type="Vider" value="Annuler" />
                        </f:facet>
                    </p:panelGrid>
                </h:form>
            </p:dialog>
     
            <p:dialog id="confirmDialog"  header="Confirmation de suppression"  widgetVar="confirmation">  
                      <table width="100%" border="0"  cellspacing="0" >
     
                          <tr >
                           <td style="border: 0; "> <h:outputText value="Voulez vous vraiment supprimer le RAT"></h:outputText></td>
     
                         </tr>
                         <tr></tr> <tr></tr>
     
                              <tr>
                                <td colspan="3" align="right" style="border: 0;  ">
                                    <hr style="color:orange"> </hr>
                                </td>
                              </tr>
                              <tr></tr>   <tr></tr>
                            <tr>
                                <td colspan="2"  style="border: 0; ">
                                  <p:commandButton  value="OUI" update=":form:ratTable" oncomplete="confirmation.hide()"  
                                actionListener="#{ratMB.deleteRat}" />  
                              <p:commandButton value="NON" onclick="confirmation.hide()" type="button" />     
                                </td>
     
                            </tr>
                      </table>
     
              </p:dialog>
    j'ai cette erreur :
    SEVERE: Received 'javax.el.MethodNotFoundException' when invoking action listener '#{ratMB.deleteRat}' for component 'j_idt23'
    javax.faces.event.MethodExpressionActionListener processAction
    SEVERE: javax.el.MethodNotFoundException: Method not found: com.xxxx.beans.RatManagedBean@1481484b.deleteRat()
    Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est normal, il n'existe pas de méthode deleteRat() mais une méthode deleteRat(RatEntity selectedRat)...

    D'un point de vue plus général, comme tu utilises Primefaces, tu devrais utiliser l'objet <p:confirmDialog>, plus simple à mettre en oeuvre et qui te permettrait de faire plus de choses
    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
     
    <p:dataTable id="maListe" ... var="item" ...>
    ...
    <p:commandButton value="Supprimer" actionListener="#{viewManager.deleteRat(item)}" update="maListe">
     
            <p:confirm header="Confirmation" message="Voulez-vous supprimer le rat ?" icon="ui-icon-alert" />
     
        </p:commandButton>
    ...
    <p:dataTable>
     
     
        <p:confirmDialog global="true" showEffect="fade" hideEffect="explode">
     
            <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
     
            <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
     
        </p:confirmDialog>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    merci Obutterlin pour ta réponse

    j'ai réglé ma page comme vous m'avez expliqué
    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
     
    <h:form id="form">
                <p:dataTable id="ratTable" var="rat" value="#{ratMB.ratList}" styleClass="userDataTableStyle"
                            paginator="true" rows="10" selection="#{ratMB.selectedRat}"  rowKey="#{rat.code}">
    			             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
    			             rowsPerPageTemplate="5,10">
    			<f:facet name="header">
                        Liste des Radio Acess Type
                    </f:facet>
                     <p:column selectionMode="single" style="width:16px;text-align:center"/>
                    	<p:column headerText="Code du Rat" sortBy="#{rat.code}">
    			<h:outputText value="#{rat.code}"></h:outputText>
    			</p:column>
    			<p:column headerText="Type du RAT" sortBy="#{rat.type}">
    			<h:outputText value="#{rat.type}"></h:outputText>
    			</p:column>
     
    			<f:facet name="footer">
    				<p:commandButton value="Ajouter" oncomplete="newRatDialog.show()" icon="ui-icon-star" title="Ajouter un nouvel Radio Access Type" />
                    <p:commandButton value="Supprimer" actionListener="#{ratMB.deleteRat(rat)}" update="ratTable">
                           <p:confirm header="Confirmation" message="Voulez-vous supprimer le rat ?" icon="ui-icon-alert" />
                    </p:commandButton>
    			</f:facet>
    		</p:dataTable> 
     
    		<p:confirmDialog global="true" showEffect="fade" hideEffect="explode">
     
            <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
     
            <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
     
           </p:confirmDialog>
     
     
    </h:form>
    et la méthode de delete(rat) dans mon managedBean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     @Transactional
    	 public void deleteRat(RatEntity Selectedrat){
    		 entityManager.remove(Selectedrat);
    	 };
    mais dans la page xhtml j'ai un warning que syntax eroor in EL je travaille avec eclipse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p:commandButton value="Supprimer" actionListener="#{ratMB.deleteRat(rat)}" update="ratTable">
    commenet le faire
    merci

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    et l'objet selected ne se supprime pas
    comment le faire svp est ce que j'ai des fautes dans mon code

    merci

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Le warning n'est pas grave, pour le reste, peux-tu te mettre en debug et voir si le "rat" passé est bien le bon ?
    Si oui, le problème vient de la couche jpa, tu peux déjà mettre l'attribut show sql à true dans le persistence.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <property name = "hibernate.show_sql" value = "true" />
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    il m'indique que l'entity est à null donc il ne le supprime pas
    comment le faire pour supprimer à partie d'une selection d'un objet
    merci

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est curieux que ça ne fonctionne pas, j'utilise ce principe dans toutes mes tables et ça fonctionne... tu as quelle version de primefaces ?

    Pour supprimer l'objet sélectionner, il faudrait rajouter ces attributs à ta table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    selectionMode="single" selection="#{beanManager.selected}"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    en fait voilà mon code je me demande est ce que la variable selected un attribut qu'on a decléré dans la classe managedBean
    voilà mon code 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
     
    <h:form id="form">
                <p:dataTable id="ratTable" var="rat" value="#{ratMB.ratList}" styleClass="userDataTableStyle"
                            paginator="true" rows="10" selection="#{ratMB.selectedRat}"  rowKey="#{rat.code}">
    			             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
    			             rowsPerPageTemplate="5,10">
    			<f:facet name="header">
                        Liste des Radio Acess Type
                    </f:facet>
                     <p:column selectionMode="single" style="width:16px;text-align:center"/>
                    	<p:column headerText="Code du Rat" sortBy="#{rat.code}">
    			<h:outputText value="#{rat.code}"></h:outputText>
    			</p:column>
    			<p:column headerText="Type du RAT" sortBy="#{rat.type}">
    			<h:outputText value="#{rat.type}"></h:outputText>
    			</p:column>
     
    			<f:facet name="footer">
    				<p:commandButton value="Ajouter" oncomplete="newRatDialog.show()" icon="ui-icon-star" title="Ajouter un nouvel Radio Access Type" />
                    <p:commandButton value="Supprimer" actionListener="#{ratMB.deleteRat(rat)}" update="ratTable">
                           <p:confirm header="Confirmation" message="Voulez-vous supprimer le rat ?" icon="ui-icon-alert" />
                    </p:commandButton>
    			</f:facet>
    		</p:dataTable> 
     
    		<p:confirmDialog global="true" showEffect="fade" hideEffect="explode">
     
            <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
     
            <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
     
           </p:confirmDialog>
     
     
    </h:form>

    est ce que dans la methode de delete je passe l'attribut seleted cé ça ?

    merci pour votre aide

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Non, si tu prends ce principe, il faut appeler une méthode delete() tout court (et changer la signature dans ton bean bien sûr)

    Les 2 attributs selectionMode="single" selection="#{beanManager.selected}" sont à placer dans <p:dataTable>, pas <p:column>


    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    mon 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
     
    @Component(value = "ratMB")
    @Scope(value = "request")
    public class RatManagedBean implements Serializable {
     
    	/** The Constant serialVersionUID. */
    	private static final long serialVersionUID = 1L;
     
    	@Autowired
    	RatService ratService;
     
     
    	private RatEntity selectedRat;
     
     
     
    	public void deleteRat(RatEntity selectedRat) throws DAOException{
     
    		try {
    			ratService.deleteRat(selectedRat);
    			ratList.remove(selectedRat);
    		} catch (DAOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    	}
     
     
     
    	public RatEntity getSelectedRat() {
    		return selectedRat;
    	}
     
    	public void setSelectedRat(RatEntity selectedRat) {
    		this.selectedRat = selectedRat;
    	}
     
     
     
     
    }

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    je veux ajouter la colonne de selection pour faciliter le traitemen de suppression
    il clique sur le radio la ligne correspondante qu'il veut supprimer
    puis clique sur le button de suppression , valide la confirmation de suppression
    resultat : objest supprimé

    je serais reconnaisseante si vous pouvez m'aider
    merci

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je ne connais pas bien Spring, là, ton managedBean utilise des annotations liées à Spring, pas à JSF, donc je ne sais pas comment ça réagit avec Primefaces.
    D'après un exemple que j'ai vu rapidement sur le net, ils utilisent les annotations standards @ManagedBean et @RequestScoped.

    Essaye déjà de faire fonctionner comme tu as commencé, ça me parait meilleur d'un point de vue de l'IHM.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/06/2006, 08h55
  2. [C#] insertion tableau à l'aide d'un bouton
    Par liliprog dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/06/2005, 09h33
  3. [VB.NET] Naviguer dans un DATAGRID a l'aide de 2 boutons
    Par stephane93fr dans le forum Windows
    Réponses: 3
    Dernier message: 13/06/2005, 12h39
  4. Effacer l'enregistrement courant?
    Par juliea dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/12/2004, 10h48
  5. ouvrir word a l'aide d'un bouton
    Par Loule dans le forum MFC
    Réponses: 12
    Dernier message: 19/02/2004, 14h55

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