Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
812 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  JSTL et Hibernate

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

JSTL et Hibernate

n°1417909
brasseld
Posté le 02-08-2006 à 09:13:46  profilanswer
 

Bonjour à tous,
 
Je développe actuellement une petite appli J2EE. Mais je rencontre actuellement un petit probléme.
En fait j'utilise Hibernate pour utiliser ls persistance objet et parceque je trouve ce framework trés bien fait et que je ne l'avais utilisé (et comme je fais ce que je veux au boulot.......lol).
Bref, j'ai ma Servlet qui récupére une list d'aprés une requéte émise via la session.find("xxxxx" ).list();
Cette liste contient en fait des tableaux d'objets dont je peux récupérer les valeurs en récupérant par exemple un iterateur sur cette liste.
 
Moi, ce que j'aimerai en fait, c'est balancer cette liste à ma JSP qui utilise JSTL.
Pour afficher ma liste, le tag foreach fonctionne correctement. Par contre lorsque je veux récupérer une valeur pour chaque ligne, à chaque fois, ça me balance une erreur :
javax.servlet.jsp.el.ELException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
Voici ma boucle :  

Code :
  1. <c:forEach var="astr" items="${requestScope['astrs']}" varStatus="status">
  2.         <tr class="${status.index%2==0?'':'couleur'}">
  3.           <td class="CadreG"></td>
  4.           <td>${astr.nomRessource}</td>
  5.           <td>${astr.prenomRessource}</td>
  6.           <td>${astr.telSncfRessource}</td>
  7.           <td>${astr.nomSociete}</td>
  8.           <td>
  9.             <a class="modifier" href="?do=SaisirPrestataire&mode=M&id_ress=${astr.idRessource}" title="Modifier les données du prestataire" ></a>
  10.             <a class="supprimer" href="?do=SupprimerPrestataire&id_ress=${astr.idRessource}" title="Supprimer le prestataire" ></a>
  11.           </td>
  12.           <td class="CadreD"></td>
  13.         </tr>
  14.       </c:forEach>


 
Je n'arrive pas à récupérer les propriétés comme j'ai envie. De la je me suis dit : "Hibernate ne me renvoie pas une liste de bean, mais bel et bien une liste de tableau d'objets."
Comment je peux faire pour afficher proprement le contenu de cette liste tout droit venue des profondeurs d'Hibernate ?
Quelle est la, votre, meilleure solution ??
Merci d'avance de vos réponses.

mood
Publicité
Posté le 02-08-2006 à 09:13:46  profilanswer
 

n°1417910
brasseld
Posté le 02-08-2006 à 09:15:47  profilanswer
 

Utiliser astr[0], astr[1]... ça fonctionne correctement, mais c'est beaucoup moins évident pour comprendre d'ou ça vient...
Enfin je suppose que c'est la seule solution....

n°1418076
_guigui_
Posté le 02-08-2006 à 13:24:19  profilanswer
 

il faut utiliser l'attribut "var" de c:forEach

Code :
  1. <c:forEach var="astr" items="${requestScope.astrs}" varStatus="status" var="toto">
  2.         <tr class="${status.index%2==0?'':'couleur'}">
  3.           <td class="CadreG"></td>
  4.           <td>${toto.nomRessource}</td>
  5.           <td>${toto.prenomRessource}</td>
  6.           <td>${toto.telSncfRessource}</td>
  7.           <td>${toto.nomSociete}</td>
  8.           <td>
  9.             <a class="modifier" href="?do=SaisirPrestataire&mode=M&id_ress=${toto.idRessource}" title="Modifier les données du prestataire" ></a>
  10.             <a class="supprimer" href="?do=SupprimerPrestataire&id_ress=${toto.idRessource}" title="Supprimer le prestataire" ></a>
  11.           </td>
  12.           <td class="CadreD"></td>
  13.         </tr>
  14.       </c:forEach>

Message cité 1 fois
Message édité par _guigui_ le 02-08-2006 à 13:25:02
n°1418115
brasseld
Posté le 02-08-2006 à 13:56:25  profilanswer
 

_guigui_ a écrit :

il faut utiliser l'attribut "var" de c:forEach

Code :
  1. <c:forEach var="astr" items="${requestScope.astrs}" varStatus="status" var="toto">
  2.         <tr class="${status.index%2==0?'':'couleur'}">
  3.           <td class="CadreG"></td>
  4.           <td>${toto.nomRessource}</td>
  5.           <td>${toto.prenomRessource}</td>
  6.           <td>${toto.telSncfRessource}</td>
  7.           <td>${toto.nomSociete}</td>
  8.           <td>
  9.             <a class="modifier" href="?do=SaisirPrestataire&mode=M&id_ress=${toto.idRessource}" title="Modifier les données du prestataire" ></a>
  10.             <a class="supprimer" href="?do=SupprimerPrestataire&id_ress=${toto.idRessource}" title="Supprimer le prestataire" ></a>
  11.           </td>
  12.           <td class="CadreD"></td>
  13.         </tr>
  14.       </c:forEach>



 
Je ne comprend pas trop ta réponse. 2 var dans un forEach ? Il doit y avoir un probléme là ? Bref, je vais utiliser l'index du tableau, ça marche comme ça.

n°1418133
brasseld
Posté le 02-08-2006 à 14:00:10  profilanswer
 

Bon, je sais, je suis chiant.
Mais j'ai encore un probléme avec Hibernate...
 
J'ai un objet persistant appelé Cheminot qui contient toute sorte d'attribut et un  
private Set qualifCheminots
 
Dans mon controleur, je récupére un cheminot via son id. Ensuite je voudrai récupérer qualifCheminots en faisant :

Code :
  1. Cheminot ch = (Cheminot)session.load(Cheminot.class, id);
  2. Set equipes = ch.getEquipeCheminots();


Mais y'a jamais moyen que ça fonctionne, j'ai toujours cette erreur :

Code :
  1. org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.model.Cheminot.equipeCheminots - no session or session was closed


J'ai fais quelques recherches sur le net mais je n'ai rien trouvé qui puisse résoudre mon probléme.
Si quelqu'un a déjà eu ce probléme et qu'il connaît la solution...
Merci

n°1418227
brasseld
Posté le 02-08-2006 à 15:17:19  profilanswer
 

Encore une question, les données de type date qui sont extraites de la BDD s'affiche de cette façon : yyyy-MM-dd et je voudrai que ces données s'affiche de cette façon : dd/MM/yyyy . Est-il possible de mettre une sorte d'intercepteur qui, avant d'afficher la donnée dans la JSP (je précise que j'utilise JSTL), intercepte la date, la formate à ma façon, puis l'affiche...
 
De la même façon, pour passer d'une date entrée dans un formulaire du type dd/MM/yyyy vers une date dans la BDD de type yyyy-MM-dd.
 
Avez vous des idées spécifiques à mettre en place ?

n°1418266
brasseld
Posté le 02-08-2006 à 15:44:10  profilanswer
 

aucune idée ?

n°1418276
brisssou
8-/
Posté le 02-08-2006 à 15:50:41  profilanswer
 

ton champ devrait être une java.util.Date, et après, tu joues avec.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1418279
brasseld
Posté le 02-08-2006 à 15:54:00  profilanswer
 

Mon champ, c'est bien une java.util.Date. Mais le formatage de la date doit se faire au niveau présentation ou dans le controleur ou durant l'accés à la BDD en formattant la date ?
Je souhaitais faire cela :  
<fmt:parseDate var="debut" value="${equipe.dateDebutEquipe}" type="date" dateStyle="short" />
mais ça fonctionne jamais, j'ai toujours cette erreur :  
D'après la TLD, l'attribut value n'accepte aucune expression
 
Je ne sais vraiment pas comment faire autrement...

n°1418296
brasseld
Posté le 02-08-2006 à 16:06:39  profilanswer
 

Je me suis trompé de ligne ;-)
En fait c'est  

Code :
  1. <fmt:formatDate pattern="dd/MM/yyyy" value="${equipe.dateFinEquipe}" />


Qui ne fonctionne pas...
D'après la TLD, l'attribut value n'accepte aucune expression

mood
Publicité
Posté le 02-08-2006 à 16:06:39  profilanswer
 

n°1418305
brisssou
8-/
Posté le 02-08-2006 à 16:22:55  profilanswer
 

<bean:write name="machin" property="taDate" format="yyyyaaMM">
 
sinon, fmt, ça sort d'où ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1418352
brasseld
Posté le 02-08-2006 à 16:44:36  profilanswer
 

De JSTL
En fait, mon probléme venait de la déclaration de ma taglib :
plutôt que décrire :
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
j'avais écris :
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>

n°1418865
_guigui_
Posté le 03-08-2006 à 13:34:56  profilanswer
 

brasseld a écrit :

Je ne comprend pas trop ta réponse. 2 var dans un forEach ? Il doit y avoir un probléme là ? Bref, je vais utiliser l'index du tableau, ça marche comme ça.


ha je n'avais pas vu que tu avais déjà mis l'attribut var désolé... mais du coup je ne comprends pas ton erreur, ca devrait fonctionner si les attributs sont bien du bon type...
désolé  :jap:  

n°1419015
brasseld
Posté le 03-08-2006 à 16:23:47  profilanswer
 

La réponse est juste au dessus ;-)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  JSTL et Hibernate

 

Sujets relatifs
Problème MVC <-> HibernateHibernate -> problème de mapping
Problème lié à JSTL[Hibernate ] récup requête SQL texte auto générée
Hibernate : erreur d'identifianthibernate default
Hibernate/OJB/DAOcreateblob hibernate
Hibernate 2 vs 3JSP/JSTL et passage de variables...(débutant)
Plus de sujets relatifs à : JSTL et Hibernate


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR