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 :

[Débutant] Tag Text et type "complexe" ?


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 55
    Par défaut [Débutant] Tag Text et type "complexe" ?
    Bonjour tout le monde,
    je débute sur Struts et je n'arrive pas à utiliser un type "complexe" dans un tag "text". Je m'explique :
    - j'ai une classe Personne et une classe Nom.
    - la classe Nom est composée de 2 String : firstname, lastname
    - la classe Personne a un membre Nom

    Quand j'accède via les taglib bean, je peux tout à fait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	<bean:write name="person" property="nom.firstname"/>
    	<bean:write name="person" property="nom.lastname"/>
    par contre, impossible de faire la meme chose avec le taglib html text. Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	Nom : <html:text property="nom.firstname" /><br />
    	Prenom : <html:text property="nom.lastname" /><br />
    ca me genere une exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.servlet.ServletException: Invalid argument looking up property: "nom.firstname" of bean: "org.apache.struts.taglib.html.BEAN"
    Merci d'avance pour vos lumieres

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	Nom : <html:text name="person" property="nom.firstname" /><br />
    	Prenom : <html:text name="person" property="nom.lastname" /><br />

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 55
    Par défaut
    j'avais testé entre temps, mais ca me sort toujours une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.servlet.ServletException: Invalid argument looking up property: "nom.firstname" of bean: "person"
    je comprends pas pourquoi il me dit qu'il ne trouve pas cette propriété ... j'ai meme essayé de passer l'attribut firstname de Nom en public des fois que, mais non ...

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Ton objet person est une propriété d'une ActionForm ou tu l'as simplement mis dans le scope via un setAttribute ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 55
    Par défaut
    Personne est un ActionForm, c'est le bean de mon formulaire :

    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
    public class PersonFormBean extends ActionForm {
    	private int age;
    	private Nom nom;
     
    	public Nom getNom() {
    		return nom;
    	}
    	public void setNom(Nom nom) {
    		this.nom = nom;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
     
    }

  6. #6
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Tu as un problème de conception..

    Si tu utilises html:text, il faut appeler les proprietes de ton form.

    Donc si tu as un form person avec une propriete nom... et bien tu appelles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text name="person" property="nom" />
    Maintenant rien ne t'empeche de mettre un objet User contenant une propriete firstname dans ton form. et du coup de l'appeler comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text name="person" property="user.firstname" />
    Bien sur il faut que user ait des accesseurs get et set de firstname.

  7. #7
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Alors, si j'ai bien compris, tu as un form-bean déclaré comme ceci dans le struts-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form-bean name="person" type="unPackage.PersonFormBean "/>
    Et dans l'Action qui initialise le formulaire, tu as codé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PersonFormBean person = (PersonFormBean) form ;
    person.setNom(nom) ;
    Dans le mapping de cette Action, tu as mis l'attribut name="person".

    Si c'est bien ça, dans la jsp, ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text name="person" property="nom.firstname" />
    Si j'ai tout faux, donne-moi plus de précision : mapping de l'Action dans le struts-config.xml, code de l'Action qui initialise le formulaire...

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

Discussions similaires

  1. [MySQL] Sauvegarder du texte (db mysql) CR, single-quote, double-quote, etc
    Par vandeyy dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2007, 11h22
  2. Réponses: 5
    Dernier message: 15/04/2005, 14h22

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