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 :

problème méthode d'affichage


Sujet :

JSF Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut problème méthode d'affichage
    Bonsoir tout le monde, je suis nouveau sur ce forum.

    j'espère que vous pourrez m'aider sur un projet que je dois rendre demain dimanche . voilà mon problème : j'ai cette méthode que j'ai ajouté dans une classe dans mon managed bean:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public List<Car> getAllCars() {
            return (List<Car>)(Car)em.createQuery("SELECT * from car").getResultList();
    }
    je l'appelle dans une autre page xhtml dans un tableau datatable. Mais ce tableau ne m'affiche rien quand j'exécute, il est vide et ne contient que l'entête (genre : id, name, year.....). J'aimerai savoir svp s'il s'agit d'un problème de déclaration, et ou est-ce que je devais déclarer normalement. Je travaille avec jsf sur netbeans. J'appelle cette méthode à partir du tableau comme ceci :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:dataTable value="#{CarBean.getAllCars}" var="item">
    . Merci d'avance.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je ne connais pas les JSF, donc je ne peux pas te répondre très précisemment, mais il y a une chose qui ne peut pas fonctionner en Java (ça ne devrait même pas compiler, ou alors Car étends une classe de List, et tu auras seulement un Warning, mais ce serait étrange quand même). C'est caster quelquechose en Car et le caster en même temp en List<Car> : soit c'est une liste de Car, soit c'est un Car, mais ça ne peut pas être les 2 à la fois.

    [EDIT] Sauf si on a public class Car extends ArrayList<Car> mais ça n'en serait pas moins étrange.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse, je viens de corriger dans mon code. Sinon pour mon problème tu n'aurais pas une petite idée ?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Bah, comme je t'ai dit, je ne connais pas les JSF, et ne fait aucun développement Web, donc je ne peux te dire ce qui ne va pas dans ton code.

    Eventuellement, je me dis que CarBean.getAllCars est surprenant : j'aurais mis CarBean.allCars, mais c'est peut-être normal de mettre getAllCars.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Oui c'est ce que je mettais au début, mais j'ai le même résultat qu'avec getAllCars. Merci quand même.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    D'après ce tutoriel, je confirme, c'est bien allCars et pas getAllCars.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    oui, dans la partie jsf, c'est allCarsou getAllCars() (avec les parenthèses donc), mais pas un mix des deux.
    Ensuite, je commencerais par mettre le résultat dans une variable intermédiaire et afficher avec println le résultat. Je vois deux possibilités: CarBean n'existe pas, ou simplement tu n'as pas de car dans ta base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public List<Car> getAllCars() {
            List<Car> resultat =(List<Car>)em.createQuery("SELECT * from car").getResultList();
            System.out.println("Cars: "+resultat);
            return resultat;
    }

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Merci joel.drigo pour le tutoriel.

    @tchize_ carbean existe bien , et j'ai car dans ma base, par contre je ne sais pas si j'ai bien déclaré ou pas. je t'envoi ce que j'ai fait et tu me dis stp si c'est correcte ?
    dans le dossier Source packeges:

    La classe: Car
    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
    @Entity
    public class Car implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
        @NotNull
        private String name;
        @NotNull
        private String brand;
        @NotNull
        private String yearOfEntry;
        @NotNull
        private int position;
        //@NotNull
        //private Date timestamp;
     
        //Relations
        //Relation avec zone
        @OneToMany(mappedBy = "car")
        private List<Zone> listZones;
     
        //Relation User
        @ManyToOne
        @JoinColumn
        private User user;
     
     
        //Constructeurs
        public Car(){
     
        }
     
        public Car(String name,String brand,String year,int position, User user){
             this.name = name;
                this.brand = brand;
                this.yearOfEntry = year;
                this.position = position;
                this.user = user;
     
        }
        //Getters et setters
     
        public Long getId() {
            return id;
        }
     
        public User getUser() {
            return user != null ? user : new User();
        }
     
        public void setUser(User user) {
            this.user = user;
        }
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name;
        }
     
        public String getBrand() {
            return brand;
        }
     
        public void setBrand(String brand) {
            this.brand = brand;
        }
     
        public String getYearOfEntry() {
            return yearOfEntry;
        }
     
        public void setYearOfEntry(String yearOfEntry) {
            this.yearOfEntry = yearOfEntry;
        }
     
        public int getPosition() {
            return position;
        }
     
        public void setPosition(int position) {
            this.position = position;
        }
     
        public List<Zone> getListZones() {
            return listZones != null ? listZones : new ArrayList<>();
        }
     
        public void setId(Long id) {
            this.id = id;
        }
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (id != null ? id.hashCode() : 0);
            return hash;
        }
     
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Car)) {
                return false;
            }
            Car other = (Car) object;
            return !((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id)));
        }
     
        @Override
        public String toString() {
            return "com.supinfo.suptracking.entity.Car[ id=" + id + " ]";
        }
     
    }
    La classe: CarDAO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @Local
    public interface CarDAO {
     
        public Car addCar(Car c);
        public Car updateCar(Car c);
        public void deleteCar(Car c);
        public List<Car> getAllCars();
     
     
    }
    La classe: JpaCarDAO
    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
     
    @Stateless
    public class JpaCarDAO implements CarDAO{
     
        @PersistenceContext
        private EntityManager em;
    @Override
         public List<Car> getAllCars() {  
            Query query = em.createNamedQuery("select * from car");  
            return query.getResultList();  
        } 
     
        // Add business logic below. (Right-click in editor and choose
        // "Insert Code > Add Business Method")
    }
    La classe:CarJSFManagedBean
    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
     
    @ManagedBean(name = "carBean")
    @RequestScoped
    public class CarJSFManagedBean implements Serializable{
     
         @PersistenceContext
        private EntityManager em;
     
        @EJB
        private CarService carservice;
        private UserService userservice;
     
        @ManagedProperty("#{authenticationBean}")
        private AuthenticationJSFManagedBean authenticationBean;
     
        public void setAuthenticationBean(AuthenticationJSFManagedBean authenticationBean) {
            this.authenticationBean = authenticationBean;
        }
     
        private String name;
        private String brand;
        private String year;
        private int position; 
     
         public List<Car> getAllCars() {  
            Query query = em.createNamedQuery("select * fron car");  
            return query.getResultList();  
        } 
    public CarService getCarservice() {
            return carservice;
        }
     
        public void setCarservice(CarService carservice) {
            this.carservice = carservice;
        }
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name;
        }
     
        public String getBrand() {
            return brand;
        }
     
        public void setBrand(String brand) {
            this.brand = brand;
        }
     
     
        public UserService getUserservice() {
            return userservice;
        }
     
        public void setUserservice(UserService userservice) {
            this.userservice = userservice;
        }
     
        public String getYear() {
            return year;
        }
     
        public void setYear(String year) {
            this.year = year;
        }
     
        public int getPosition() {
            return position;
        }
     
        public void setPosition(int position) {
            this.position = position;
        }
     
    }
    La page JSF
    Code jsp : 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
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://xmlns.jcp.org/jsf/html"
          xmlns:f="http://xmlns.jcp.org/jsf/core">
        <h:head>
            <title>suptracking</title>
        </h:head>
        <h:body>
            <h:form>
                <p>
                    <h:outputText value="name"></h:outputText>
                    <h:inputText id="name" value="#{carBean.name}" ></h:inputText>
                </p>
                <p>
                    <h:outputText value="brand"></h:outputText>
                    <h:inputText id="brand" value="#{carBean.brand}" ></h:inputText>
                 </p>   
                <p>
                    <h:outputText value="year"></h:outputText>
                    <h:inputText id="year" value="#{carBean.year}" ></h:inputText>
                  </p>  
                <p>
                    <h:outputText value="position"></h:outputText>
                <h:inputText id="position" value="#{carBean.position}" ></h:inputText>
                 </p> 
     
                <p>
                 <h:outputText value="user"></h:outputText>
                <h:inputText id="user" value="#{authenticationBean.email}" ></h:inputText>
                 </p>
     
                <h:commandButton value="Ajouter" action="#{carBean.addCar()}"></h:commandButton>
                <h:commandButton value="Modifier" action="#{carBean.updateCar()}"></h:commandButton>
                <h:commandButton value="Supprimer" action="#{carBean.deleteCar()}"></h:commandButton>
            </h:form>
     
            <f:view>
     
    *****************la partie du code qui bugue****************************************
                <h:form>
                    <h1><h:outputText value="List"/></h1>
                    <h:dataTable value="#{CarBean.Allcars}" var="item">
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="Id"/>
                            </f:facet>
                            <h:outputText value="#{item.id}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="User"/>
                            </f:facet>
                            <h:outputText value="#{item.user}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="Name"/>
                            </f:facet>
                            <h:outputText value="#{item.name}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="Brand"/>
                            </f:facet>
                            <h:outputText value="#{item.brand}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="YearOfEntry"/>
                            </f:facet>
                            <h:outputText value="#{item.yearOfEntry}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="Position"/>
                            </f:facet>
                            <h:outputText value="#{item.position}"/>
                        </h:column>
                    </h:dataTable>
                </h:form>
            </f:view>
     
        </h:body>
    </html>
    ********************************************************************************

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ce n'est pas une question de sensibilité à casse ? Parce que tu références "CarBean", alors que c'est déclaré "carBean". Et tu as mis "AllCars" dans l'el et non pas "allCars".

    Sinon que donne la trace suggérée par @Tchize_ ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    en fait je crois qu'il s'agit bien d'un problème de casse, et maintenant que j'ai corrigé et qu'il reconnait carbean il m'affiche un message d'erreur pour ma méthode et celle qu'a proposé tchize_ :
    An exception occurred while creating a query in EntityManager: Exception Description: Syntax error parsing [SELECT * from car]. [17, 17] A select statement must have a FROM clause. [7, 7] The left expression is missing from the arithmetic expression. [9, 17] The right expression is not an arithmetic expression.

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu as essayé "SELECT * FROM car" ? On te dit qu'on ne trouve pas FROM dans une requête "SELECT * from", alors qu'il y a manifestement "from", mais pas dans la bonne casse : il me semble évident qu'avant toute chose, j'essaierais "FROM" au lieu de "from"...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Je vais essayer ça et voir ce qui se passe

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Je viens de changer la requête en ceci : et quand j'ai exécuté il a affiché mes enregistrement dans le tableau

  14. #14
    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 un peu n'importe quoi ce que tu as fait, tu utilises un NamedQuery comme un NativeQuery...
    En JPA, il faudrait faire une requête dans ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query query = entityManager.createQuery("select c from Car c where ...");
    OU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query query = entityManager.createNativeQuery("select colonne1, colonne2, ... from schema.table where ...");
    OU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Query query = entityManager.createNamedQuery("Nom_Query");
     
    Avec quelque part (dans l'entity par exemple)
    @NamedQuery(name="Nom_Query", query="select c FROM Car c")
    Pour l'appel, dans ton cas, il faudrait appeler la méthode sous cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:dataTable value="#{carBean.getAllCars()}" var="item">
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    j'ai un autre problème dans mon code , j'ai créé une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public String showDetails(int id) {
    return "Liste_car?id=" + id; }
    et quand j'exécute j'ai cette erreur : javax.el.PropertyNotFoundException: /addcar.xhtml @53,81 action="#{carbean.showDetails(item.id)}": Target Unreachable, identifier 'carbean' resolved to null

    tu peux m'aider stp ?

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    désolé pour le double post je viens de voir ta réponse OButterlin. Au fait je n'ai plus de problème avec cette requête, j'ai réussi à afficher les enregistrements. Merci en tout cas . tu peux m'aider stp avec mon nouveau problème ?

    edit : par contre j'aimerai bien savoir comment faire une requête select count et une requête select top. Parce que dans mon code il reconnait pas select count (*) et select top.

  17. #17
    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
    Il faut faire attention aux majuscules/minuscules, ton bean a été enregistré sous le nom carBean, pas carbean.

    Pour faire un count(*), soit tu passes par une requête native
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query query = entityManager.createNativeQuery("select count(*) from nomShema.nomTable");
    Soit par une requête "normale" JPA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query query = entityManager.createQuery("select count(c) from Car c");
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  18. #18
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup ça a fonctionné . Stp et comment faire pour récupérer l'id d'un enregistrement dans un tableau et pouvoir faire une suppression ou une modification avec, sachant que je ne sais ni faire de modif ni de suppression. merci pour ton aide.

    Edit : stp j'ai écrit cette méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public List<Car> gettenCars() {
     
             Query query = em.createNamedQuery("select top 10 * from Car GROUP BY name, user");  
            return query.getResultList();
    mais il m'affiche cette erreur : NamedQuery of name: select top 10 * from Car GROUP BY name, user not found.

  19. #19
    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
    Alors... encore une fois...
    Un NAMED query fait référence à une définition de query, comme je te l'ai mis dans mon message plus haut
    Un NATIVE query fait référence à une requête SQL standard, native
    Un Query tout court, c'est du JPA

    Après, on ne fait pas une requête TOP 10, ce n'est pas du SQL standardisé. On utilise les options de l'objet Query, en l'occurrence la méthode setMaxResults(10)

    Pour l'histoire de l'id dans un datatable, ben, ton objet Car a une propriété id à laquelle tu peux faire référence dans une méthode.
    Ce serait quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:commandButton value="Supprimer" action="#{carBean.delete(item.id)}"/>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse. Stp tu peux me dire comment faire une suppression en jpa ? désolé je suis vraiment nul en java je n'y comprends rien

    Edit : j'ai eu cette erreur alors que le Name est bien déclaré dans mon Bean avec les getter et les setter, on me le souligne en jaune sur la page xhtml et quand j'exécute j'ai cette erreur : /zone.xhtml @12,66 value="#{zoneBean.Name}": The class 'com.supinfo.suptracking.managedBean.ZoneJSFManagedBean1' does not have the property 'Name'.

    Tu peux m'éclairer stp la-dessus ? je ne sais pas ce qui manque.

Discussions similaires

  1. Problème avec l'affichage de souris INT 33,01h
    Par belgampaul dans le forum Assembleur
    Réponses: 7
    Dernier message: 07/12/2004, 21h37
  2. Problème liste d'affichage
    Par nicolas66 dans le forum OpenGL
    Réponses: 6
    Dernier message: 06/12/2004, 10h10
  3. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06
  4. Réponses: 11
    Dernier message: 16/12/2003, 19h58
  5. Problème a l'affichage dans la console (printf)
    Par PhoneKilleR dans le forum C
    Réponses: 21
    Dernier message: 23/09/2003, 17h21

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