Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Probleme d'affichage de table avec hibernate

juliette, le jeudi 4 septembre 2008 à 12:54:29
Bonjour,
je travaille avec myeclipse 5.1,strut et hibernate,et je desire afficher une liste d'orientations à partir d'une table orientation.le mapping s'est bien passé mais j'obtien un tableau vide,c'est comme s'il n'yavais pas d'elements dans la table,pourtant ce n'est pas le cas.

voici le code que j'ai utilisé pour recuperer la table:


public static List getOrientationList(){
Session session = HibernateSessionFactory.getSession();
List list = null;
try{
Query query=session.createQuery("from Orientation u ");
list =query.list();


}catch(Exception ex){
ex.printStackTrace();
}
return list;
}



et pour afficher la table dans une page jsp j'ai fais:

<body>


<table border="1">
<tbody>
<%-- set the header --%>
<tr>
<td>Orientations</td>

</tr>
<%-- check if orientation exists and display message
--%>

<logic:empty name="getListOrientationForm" property="orientations">
<tr>
<td colspan="3">No orientations available</td>
</tr>
</logic:empty>
<logic:notEmpty name="getListOrientationForm" property="orientations">
<logic:iterate name="orienttions" property="orientations" id="orientation" >
<tr>
<%-- print out the orientation informations --%>
<td><bean:write name="orientation" property="libelleorientation" />
</td>
</logic:iterate>
</logic:notEmpty>
<%-- end interate --%>
</tbody>
</table>
</body>


Veuillez ,s'il vous plait,jeter un coup d'oeil à mon pb,ça me bloque totalement et il faut que j'avance

merci
Configuration: Windows XP
Internet Explorer 6.0
Répondre à juliette  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marco la baraque, le jeudi 4 septembre 2008 à 13:14:10
Bonjour Juliette,
Pourrais-tu donner quelques informations supplémentaires stp? Notamment sur les points suivants :
- expliquer globalement ton architecture, grosso modo si ta méthode getOrientationList() est appelée directement depuis tes actions struts, ou si tu passes par des classes intermédiaires
- expliquer comment et où tu gères ta connexion et tes transactions à la BD

Enfin, pourrais tu poser des breakpoints à la sortie de la méthode getOrientationList() afin de nous dire si déjà à cet endroit ta liste retournée est vide, ou détecter à quel endroit elle est vidée.

Merci

Cordialement, blogfrisbee point blogspot point com
Répondre à Marco la baraque

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
juliette, le jeudi 4 septembre 2008 à 15:58:20
la methode getListOrientation() se trouve dans une classe ou j'ai mis toutes les methodes et que j'ai appellé ServiceUser.java.
lorsque mon action getListOrientationAction est appellée ,elle appelle la methode getListOrientation() via le code suivant:


public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {




GetListOrientationForm getListOrientationForm = (GetListOrientationForm) form;// TODO Auto-generated method stub

ServiceUser.getListOrientation();

return mapping.findForward("showList");

}

et l'action elle meme est associée à une form-bean:getListOrientationForm ou il y'a le code suivant:


public class GetListOrientationForm extends ActionForm {
private Collection orientations;

public Collection getOrientations() {
return orientations;
}
public void setOrientations(Collection orientations) {
this.orientations = orientations;

}

public void reset(ActionMapping mapping, HttpServletRequest request) {

orientations = new ArrayList();
}
Répondre à juliette

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marco la baraque, le jeudi 4 septembre 2008 à 20:22:31
Il y a certains points que je ne saisis pas trop :
- le premier, c'est ton HibernateSessionFactory.getSession(). Ca te retourne quoi si tu n'as pas de session active ? Ca t'en crée une ? Ta classe HibernateSessionFactory elle est dans quel package (j'ai regardé vite fait la doc hibernate mais elle n'a pas l'air d'être dedans, donc d'où vient-elle? D'un framework?).
- le second, c'est le ServiceUser.getListOrientation(); . La question que je me pose, c'est que ok, tu appelles bien ton service qui te retourne une liste. Mais comme tu ne récupères pas la liste retournée et que tu ne l'envoie nulle part, il ne faut pas t'étonner de ne rien avoir dans ta jsp.
Moi je ne connais pas struts1 (j'utilise struts2 qui est un peu différent), mais si je comprends bien, tu devrais stocker le retour de getListOrientation() dans la collection orientations, parce que c'est à elle que ta jsp essaie d'accéder.

Donc à mon avis, le code que tu devrais essayer avant tout c'est :
this.orientations = ServiceUser.getListOrientation(); 


Voilà, sinon tu ne m'as pas dit ce que donnaient les résultats des breakpoints.
Dernier point : ton code est tout simplement incompréhensible tel que tu l'exposes, ça ne nous aide pas à avancer, essaie peut-être de soigner un peu plus la présentation, on ira plus vite.

Cordialement, blogfrisbee point blogspot point com
Répondre à Marco la baraque

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
juliette, le jeudi 4 septembre 2008 à 21:36:36
- Pour la classe HibernateSessionFactory,elle est venue toute seule,elle est dans le repertoire hibernate que j'ai crée lorsque j'ai ajouter hibernate capabilities à mon projet.
- Avec les breakpoints la liste est tjs vide
-Et même avec la ligne de code que tu m'a filé,ça n'a pas marché.

Il se trouve que je suis debutante et que c'est ma premiere application de ce genre,peut étre que je me suis tromper dans la demarche,car moi j'ai crée une form,action and jsp.l'action son input est getOrientation.jsp ,qui est en meme temps son forword....je sais que c'est tiré par les cheveux,donc stp pourrais tu me proposer une demarche bien claire pour pouvoir afficher le contenu d'une table!


un trés grand merci
Répondre à juliette

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marco la baraque, le jeudi 4 septembre 2008 à 22:18:32
Bonsoir,
En théorie ta démarche est bonne, du moins ce que j'en comprends :
tu as une jsp qui utilise des données contenues dans la classe action, qui elle fait appel à une classe service faisant une requête en base.

Je suis incapable de t'aider sur struts1, donc je ne sais pas si tu développes cette appli pour le plaisir et pour ton propre compte, mais si tu n'es pas pressée, je peux te développer un tutoriel pour te montrer comment on fait ça avec de l'hibernate, du spring si tu le souhaites, du struts2 (pas de form dans struts2, juste une classe action et un fichier xml qui se charge des redirections, forward..., c'est très simple et efficace).

Je suis assez débordé en ce moment, mais je peux te faire ça pour dans 2 semaines si ça te branche et si t'as le temps d'attendre.

Si tu n'as pas le temps, dis le moi, on va essayer de reprendre ton truc calmement et pas à pas. blogfrisbee point blogspot point com
Répondre à Marco la baraque

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
juliette, le jeudi 4 septembre 2008 à 22:23:11
merci bcp Marco,c'est gentil à toi.Mais il se trouve que je suis en stage,et il me reste 15 jours pour rendre l'application et j'ai encore plein de chose à faire:l'ajout,la supression,la modif....mais je pense que si j'arrive à afficher la table ,le reste ne sera pas tres dificile à faire.Bref,le temps,c'est ce qui me manque
Répondre à juliette

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marco la baraque, le jeudi 4 septembre 2008 à 23:00:09
Ok, pas de souci.

Avant de passer à l'affichage, on va s'occuper de la partie Hibernate. Et s'assurer qu'on extrait bien les données qu'on veut.
Une fois que ce sera fait, on passera la liste à Struts, et enfin, on affichera ça dans la jsp.

Pour configurer Hibernate, tu as 3 choses :
- le fichier xml, pour configurer ta BD, tes classes mappées... j'imagine que ça c'est bon
- tes java beans, qui sont de simples classes avec un constructeur par défaut et des accesseurs/mutateurs, et les annotations qui vont bien... tu m'as dit que ça aussi ça marchait
-enfin, pour faire les choses bien, on utilise des dao (Data Access Object) qui sont des interfaces s'occupant de la partie requêtage SQL...

Ensuite, tes classes service vont utiliser les dao pour obtenir les informations souhaitées.

Pour le code, on va prendre un exemple simple : un bean Personne comportant 2 attributs (je mets pas les import, je ne les connais pas par coeur) :
@Entity
@Table (name = "personne")
class Personne {

 private Integer id;
 private String nom;
 private String prenom;

 public Personne(){}

 @Id
 @GeneratedValue (strategy = GenerationType.AUTO) //laisse ton sgbd générer automatiquement les id
 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getNom() {
  return nom;
 }

 public void setNom(String nom) {
  this.nom = nom;
 }

 //idem pour prenom
}

class Service {
 
 private PersonneDao personneDao = new PersonneDao(); 

 public List<Personne> cherchePersonne(String nom, String prenom) {
  return personneDao.chercherPersonne(nom, prenom);
 }

}

class PersonneDao {

 public List<Personne> cherchePersonne(String nom, String prenom) {
  Session session = HibernateUtil.getSessionFactory().getCurrentSession();
  session.beginTransaction();
  List<Personne> personnes = session.createQuery("from Personne where nom=" + nom + " and prenom=" + prenom).list(); 
 session.getTransaction().commit();
  return personnes;
 }
}

public class HibernateUtil {
 public static final SessionFactory sessionFactory;
 static {
  try {
   sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
  } catch (Throwable e) {
   throw new ExceptionInInitializerError(e);
  }
 }

 public static SessionFactory getSessionFactory() {
  return sessionFactory;
 }
}


Voilà en gros comment il faut faire, après tu as des optimisations à faire. Par exemple utiliser des preparedStatement, améliorer la gestion des transactions pour les faire depuis tes classes service (tu peux en avoir besoin pour faire des rollback lorsque tu as plusieurs actions qui s'enchaînent)...

Teste ça via une classe JUnit par exemple, ça va te prendre 5minutes à développer et au moins on sera fixé quand au fait de savoir si tu as bien une liste d'objets retournés par Hibernate.
Une fois que ce sera fait, reviens vers moi, et on verra comment on avance (mais pour le reste je pense que tu étais à peu près ok, si tu rajoute la ligne que je t'avais donnée).

Cordialement, blogfrisbee point blogspot point com
Répondre à Marco la baraque

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
juliette, le jeudi 4 septembre 2008 à 23:26:19
jUnit est un framework de test c'est ça??je pense que je l'ai pas.
aussi pour la classe ou tu as mis les attribut de personne et ses getters et setters,elle est generée par hibernate non??
Répondre à juliette

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marco la baraque, le jeudi 4 septembre 2008 à 23:39:52
Junit ouai, mais c'est pas compliqué à installer en fait. Tu as juste un jar à ajouter à ton classpath pour pouvoir l'utiliser. Et peut-être même que c'est intégré à eclipse par défaut, vérifie tout de même.
Parce que c'est super restrictif de devoir monter toutes ses couches d'appli JEE avant de pouvoir tester, au final tu testes un produit développé sur 3 jours et donc bourré de bugs, il vaut mieux y aller pas à pas.

Pour le java bean, elle n'est pas générée automatiquement. Tu dois avoir des plugins eclipse (genre Hibernate Tools) qui permettent de générer ces classes à partir de ta base de données effectivement, regarde donc si tu peux les générer, sinon tu les fais à la main (là Personne est une classe bidon, mais parfois tu as des relations de foreign key qui sont un peu plus embêtantes à spécifier). blogfrisbee point blogspot point com
Répondre à Marco la baraque

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
juliette, le vendredi 5 septembre 2008 à 00:46:49
desolée de t'embeter encore.mais pour le code que tu m'as donné est ce que je dois le mettre dans la form-bean ou l'action??
en fait pour la javabean,elle est generée par hibernate
Répondre à juliette

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marco la baraque, le vendredi 5 septembre 2008 à 01:08:02
Non non, pour le moment on s'occupe que de la partie "modèle" du pattern MVC.
Tu dois donc écrire toutes ces classes à la main (sauf le bean puisque tu l'as généré).

On n'utilise absolument pas struts pour le moment. Une fois qu'on sera sûr que notre couche modèle fonctionne, alors on développera les actions et forms (la partie "contrôleur") afin de s'assurer que nos données transitent bien jusqu'à la vue, et enfin on développera notre jsp de manière à afficher correctement ces données.
blogfrisbee point blogspot point com
Répondre à Marco la baraque

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
juliette, le vendredi 5 septembre 2008 à 02:12:41
salut,
ça a enfin marché,tout fonctionne et la table orientation s'affiche.il a suffit d' ajouter getListOrientationForm.setOrientations(ServiceUser.getOrient­ationList()); dans l'action.

merci bcp,je t'en suis extremement reconnaissante
Répondre à juliette

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Marco la baraque, le vendredi 5 septembre 2008 à 09:45:17
Hello,
Heureux d'avoir pu t'aider. N'oublie pas de passer ton post en résolu, et à la prochaine.

Cordialement, blogfrisbee point blogspot point com
Répondre à Marco la baraque

Résultats pour probleme d'affichage de table avec hibernate

Checkbox html et mysql! (Résolu) Bonjour, bon je debute depuis quelques semaines en SQL , php , html , je me debrouille plutot bien jusque la :p AFFICHAGE TABLEAU j'aimerais en fait avoir un tableau ( en html car j'ai rajouter du CSS pour qu'il soit plus beau) avec ma... www.commentcamarche.net/forum/affich-8918383-checkbox-html-et-mysql
[C] Probleme affichage tableau caractères (Résolu) Bonjour, J'ai un petit programme pour afficher un tableau de caractere 20*20 vide dont le contour est fait de #. Je le compile tout va bien, mais quand la fenetre dos me l'affiche, j'ai une représentation en ligne du tableau. Comment je... www.commentcamarche.net/forum/affich-2501328-c-probleme-affichage-tableau-caracteres
ACCESS!!!afficher tables ds formulaire (Résolu) salut a tous quelqu'un sait comment depuis un formulaire je peux afficher la fenetre de la bases de donnée pour faire un choix sur les tables merci d'avance a+ lahyenne www.commentcamarche.net/forum/affich-1035469-access-afficher-tables-ds-formulaire

Résultats pour probleme d'affichage de table avec hibernate

[PHP] Méthodes de débogageMéthodes de débogage I. Informations sur une variable I.1 echo I.2 print_r() I.3 var_dump() / var_export() I.4 Rediriger la sortie (ne pas afficher à l'écran) II. "Backtrace" ou rapport de contexte III. Bien utiliser les rapports... www.commentcamarche.net/faq/sujet-3158-php-methodes-de-debogage
Commandes IP relatives aux réseaux sous WindowsIl est parfois très utile de connaître les commandes IP, pour analyser voire configurer ses réseaux TCP/IP. Voici la liste de ces commandes à utiliser dans une fenêtre DOS... www.commentcamarche.net/faq/sujet-9324-commandes-ip-relatives-aux-reseaux-sous-windows
Introduction à la STL en C++ (standard template library)Introduction Principales classes de la STL std::pair std::list std::vector std::set std::map Les iterators iterator et const_iterator reverse_iterator et const_reverse_iterator Les algorithmes ... www.commentcamarche.net/faq/sujet-11255-introduction-a-la-stl-en-c-standard-template-library

Résultats pour probleme d'affichage de table avec hibernate

[CSS] probleme affichage tableau IE (Résolu)Bonjour, voila j'ai créé un tableau en CSS qui s'affiche parfaitement sous FF, mais pas sous IE, le code est super simple je ne comprend vraiment pas le problème ! le tableau est en trois partie : haut,milieu,bas. chacun avec un image de... www.commentcamarche.net/forum/affich-8367957-css-probleme-affichage-tableau-ie
Pb affichage tableau html IE/Mozilla (Résolu)Bonjour à tous, je suis actuellement en train de creer un site en html et tout fonctionnais bien jusqu'à temps que j'aille jeter un coup d'oeil sous Mozilla : j'utilise des tableaux pour afficher le graphisme et il semble que... www.commentcamarche.net/forum/affich-4185911-pb-affichage-tableau-html-ie-mozilla
Affichage tableau mais avec assenceur (Résolu)Bonjour, J'ai un tableau avec environ 150 lignes Bien sur, cela dépasse largement la page Je voudrais afficher ce tableau avec un assenceur pour qu'il ne dépasse pas la hauteur de page. J'ai esseyé plusieur codes, mais rien ne tourne.... www.commentcamarche.net/forum/affich-5696863-affichage-tableau-mais-avec-assenceur

Résultats pour probleme d'affichage de table avec hibernate

Les tableauxUtilisation de tableaux Il est souvent utile de présenter des informations mieux structurées qu'avec des listes. Les tableaux permettent de les afficher en lignes et en colonnes. Les tableaux sont définis comme étant des suites de lignes. Un... www.commentcamarche.net/contents/html/htmltable.php3
Les tableaux en langage C++Type de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes... www.commentcamarche.net/contents/cpp/cpptab.php3
PHP - Bases de donnéesPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de... www.commentcamarche.net/contents/php/phpbdd.php3