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

Struts 1 Java Discussion :

afficher objet avec <bean:write>


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Par défaut afficher objet avec <bean:write>
    Bonjour,
    Voila je suis débutant en J2EE avec Struts + Hibernate et je n'arrive pas à afficher un objet user dans ma page jsp en utilisant <bean:write>

    J'ai une erreur type:
    org.apache.jasper.JasperException: Cannot find bean: "usa" in scope: "session"


    Voici le code de ma page jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    <bean:define id="usa_id" name="usa" scope="session" type="test.javabeans.Usager"/>
     
    <bean:write name="usa_id" property="nom"/><br>
    <bean:write name="usa_id" property="prenom"/><br>
    et le code de mon UsagerAction

    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
     
    public class UsagerAction extends Action {
     
    	public ActionForward execute(
    			ActionMapping mapping,
    			ActionForm form,
    			HttpServletRequest request,
    			HttpServletResponse response)
    		throws Exception{
     
    		UsagerDAO user = new HibernateDAOFactory().getUsagerDAO();
     
    		 DynaValidatorForm dynaForm = (DynaValidatorForm) form;
     
    		 request.getSession().setAttribute("usa",user.findUsagerDAO(dynaForm.getString("nom")));
     
    	  	return mapping.findForward("affiche");
    	}
     
     
    }
    J'ai déja testé un insert et un affichage complet de ma table: ca fonctionne
    Par contre, avec ma méthode findUsagerDAO(...) qui me retourne un objet type Usager, je n'arrive pas à l'afficher...?
    Je dois surement faire une erreur dans la déclaration de mon <bean:write> ou dans l'envoi de mon objet user....

  2. #2
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    es tu sur que ta recherche renvoie un resultat?

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Par défaut
    ma méthode findUsagerDAO() fait:
    user = (Usager) session.load(Usager.class, nom);
    et fait un :
    return user

    Cet juste une base de test, ma table contient 2 champs "nom" et "prénom" avec quelques enregistrements.
    Au lancement, je renseigne un juste un nom précis ds un formulaire qui normalement devrait m'afficher le nom et le prénom trouvé ds la table.

    Par contre, je ne sais pas si au moment du return, mon objet contient réellement quelquechose.
    Quel code je pourrais mettre pour faire une vérification préalable avant mon return mapping.findForward("affiche"); ???

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut
    Heu... je pense que tu as deux sol :
    soit ton env de dev te permet de faire du debug et dans ce cas tu mets un point d'arrêt au début de ta méthode "execute" et tu exéctes pas à pas en surveillant les valeurs de tes variables (c'est je pense le plus pratique)

    soit :
    - tu redéfinis la méthode toString() dans la classe test.javabeans.Usager :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Usager  {
    private String nom;
    private String prenom;
     
    @override
    public String toString(){
       return new StringBuffer("nom = ").append(nom).append(" prenom = ").append(prenom).toString();
    }
     
    }
    - ensuite tu mets dans ton Action :
    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
     
    public class UsagerAction extends Action {
     
    	public ActionForward execute(
    			ActionMapping mapping,
    			ActionForm form,
    			HttpServletRequest request,
    			HttpServletResponse response)
    		throws Exception{
     
    		UsagerDAO user = new HibernateDAOFactory().getUsagerDAO();
     
    		 DynaValidatorForm dynaForm = (DynaValidatorForm) form;
     
    		 request.getSession().setAttribute("usa",user.findUsagerDAO(dynaForm.getString("nom")));
     
     
    System.out.println(new StringBuffer("objet Usage = ").append(user.findUsagerDAO(dynaForm.getString("nom"))).toString());
     
    System.out.println(new StringBuffer("objet Usage en session = ").append(request.getSession().getAttribute("usa")).toString());
     
    	  	return mapping.findForward("affiche");
    	}
     
     
    }
    Ca te dit quoi ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut
    Ah et j'ai oublié un test quue tu pex faire dans ta jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <% System.out.println(" session attribut usa = ");
    System.out.println(request.getSession().getAttribute("usa")); %>
     
     
    <bean:define id="usa_id" name="usa" scope="session" type="test.javabeans.Usager"/>
     
    <bean:write name="usa_id" property="nom"/><br>
    <bean:write name="usa_id" property="prenom"/><br>
    et tu vois ce qu'il t'écris
    (tu peux coupler les deux tests, ca peut te permettre de voir plus clair plus rapidement )

    Aller bon courage,

    A+

    Anne

  6. #6
    Membre averti
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Par défaut
    Merci AnneB pour ton aide, je viens de faire les 2 tests et ca me renvoie des valeurs null:

    objet Usage = null
    objet Usage en session = null
    session attribut usa = null

    Comme ci ma méthode findUsagerDAO ne renvoyait rien:

    Voila le code de ma méthode:
    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
     
    public Usager findUsagerDAO (String nom){
    		org.hibernate.Session session = HibernateDAOFactory.creerConnexion();
    	Usager user = null;
    		try{
    			session.beginTransaction();
     			user = (Usager) session.load(Usager.class, nom);
     			session.getTransaction().commit();
     
    		}catch (org.hibernate.HibernateException e) {
    		e.printStackTrace();
    		}finally{
    			try{
    			HibernateUtil.closeSession();
    			}catch (org.hibernate.HibernateException e1) {
    			e1.printStackTrace();
    			}
    		}
    		return user;
    	}
    Je me suis peu être trompé dans la facon de remonté les valeurs
    Vu mon niveau en Java,Struts,hibernate, j'ai repiqué du code dans des tutos mais ca ne fonctionne pas!!
    Sinon est ce que quelqu'un aurait une "méthode type" avec struts pour récupérer un enregistrement complet d'une table en fournissant la valeur d'un champ "nom" dans un formulaire. ???

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher objets avec propriétés imbriqués
    Par capitaine dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 18/07/2008, 10h06
  2. Affichage avec <bean:write
    Par metalcoyote dans le forum Struts 1
    Réponses: 1
    Dernier message: 13/09/2006, 18h52
  3. Combiner <bean:message> avec <bean:write>
    Par Nullos Oracle dans le forum Struts 1
    Réponses: 23
    Dernier message: 12/06/2006, 03h30
  4. [struts][]taglib bean] afficher html avec write
    Par mlequim dans le forum Struts 1
    Réponses: 6
    Dernier message: 04/11/2005, 18h44
  5. [Struts][JSP] Format avec bean:write
    Par cowa dans le forum Servlets/JSP
    Réponses: 20
    Dernier message: 19/05/2004, 18h16

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