Bonjour j'ai un probleme de null et après plusieurs recherche, je me suis décider a poster.
En fait j'ai un formulaire devant enregistrer des étudiants (J'ai donc developper un form avec les bouton classique, enregistrer, modifier, supprimer, suivant, fermer).
Donc au chargement de ma page, dans le bean, je charge l'ensemble des étudiant. La classe etudiant est lié par une relation many-to-one a une classe ecole. Je charge aussi cette classe. Pour gagner en performance j'utilise un fetch.join (Ehh oui c'est avec hibernate, et ca me permet d'avoir les données en une seule requete). Ainsi lorsqu'on clique sur le bouton suivant, j'increment un curseur, je recupere le prochain enregistrement dans ma liste et je l'affiche.
Le probleme se pose au niveau de la classe ecole. En effet des étudiant ne sont pas encore affectee a une ecole, alors que dans mon code, j'ai une ligne du genre
<ice:inputText value="#{beanEtudiant.etudiant.ecole.id}"/>
Donc il me met une exception null lorsqu'un clique sur le bouton suivant se positionne sur un enregistreemnt du genre.
une des solutions que j'envisageait est de creer une classe EcoleAdaptateur. Ainsi après avoir charge ma liste, je la parcours et positionne un id qui se trouvement dans l'adatateur.
1 2 3 4 5
|
public class EcoleAdaptateur {
private long idToShow;
private Etudiant etudiant;
} |
Le problème ici c'est que je suis obligue de parcourir l'ensemble de ma liste pour positionner mon idToShow. Ce qui est couteux si je pense avoir des liste d'un millier d'élémnet dans un environnement qui peut arriver a une centaine d'utilisateur.
Quelqu'un n'a t'il pas une solution ou on pourrait intercepter lors du rendu de etudiant chaque objet et positionner sa valeur ecole si elle est nulle.
Merci d'avance
Je vous met une portion de mon formulaire
1 2 3 4 5 6 7 8 9 10 11 12 13
| <ice:panelGrid columns="2">
<ice:outputText value="#{msg.FORMULAIRE_ETUDIANT_etudiant_PRENOM}"/>
<ice:inputText value="#{beanEtudiant.etudiant.prenom}"/>
<ice:outputText value="#{msg.FORMULAIRE_ETUDIANT_etudiant_NOM}"/>
<ice:inputText value="#{beanEtudiant.etudiant.nom}"/>
<ice:outputText value="#{msg.FORMULAIRE_ETUDIANT_etudiant_MATRICULE}"/>
<ice:inputText value="#{beanEtudiant.etudiant.matricule}"/>
<ice:outputText value="#{msg.FORMULAIRE_ETUDIANT_etudiant_ECOLE}"/>
<ice:panelGroup>
<ice:inputText value="#{beanEtudiant.etudiant.ecole.id}"/>
<ice:commandButton action="#{beanEtudiant.cmdSearch_etudiant_Ecole}"/>
</ice:panelGroup>
</ice:panelGrid> |
Mes classes metiers
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
| package oued.couche.pojo;
import java.util.*;
public class Etudiant{
private long id;
public long getId(){return id;}
public void setId(long id){this.id=id;}
private String prenom;
public String getPrenom(){return prenom;}
public void setPrenom(String prenom){this.prenom=prenom;}
private String nom;
public String getNom(){return nom;}
public void setNom(String nom){this.nom=nom;}
private String matricule;
public String getMatricule(){return matricule;}
public void setMatricule(String matricule){this.matricule=matricule;}
private Ecole ecole;
public Ecole getEcole(){return ecole;}
public void setEcole(Ecole ecole){this.ecole=ecole;}
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package oued.couche.pojo;
import java.util.*;
public class Ecole{
private long id;
public long getId(){return id;}
public void setId(long id){this.id=id;}
private String nomEcole;
public String getNomEcole(){return nomEcole;}
public void setNomEcole(String nomEcole){this.nomEcole=nomEcole;}
private String codeEcole;
public String getCodeEcole(){return codeEcole;}
public void setCodeEcole(String codeEcole){this.codeEcole=codeEcole;}
private Set listeEtudiant;
public Set getListeEtudiant(){return listeEtudiant;}
public void setListeEtudiant(Set listeEtudiant){this.listeEtudiant=listeEtudiant;}
} |
Partager