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 :

Un formulaire initialisé avec les propriétés d'un bean


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    dev
    Inscrit en
    Février 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2008
    Messages : 24
    Par défaut Un formulaire initialisé avec les propriétés d'un bean
    Bonjour à tous,
    Je viens ici pour qu'on m'aide à trouver un probléme lié à l'utilisation de struts
    J'ai une petite appli pour gerer une base de données. Je m'explique: il s'agit de recuperer les enregistrement un à un dans un tableau. Vous me suivez? ok
    ça j'ai pu faire ça avec des logic:iterate bean:write. Ma quetion est alors de savoir comment transformer ce tableau en un formulaire, pour que les cellules deviennent des html:text avec comme valeur initiale . Autrement dit, comment faire pour recuperer les bean:write dans mes champs pour que je puisse editer, supprimmer la ligne de ma bdd.
    voici une cellule qui affiche le nom d'un client:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <td><bean:write name="custumer" property="nom"></bean:write></td>
    Je désire avoir ça dans value de html:text
    je pense que vous avez compris mon cri, car c'est facile de parler au AS,

  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
    Le mieux, c'est de définir ta liste comme propriété de l'ActionForm et ensuite d'utiliser les tags nested :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <nested:form action="pathDeTonAction">
       <nested:iterate property="taListe">
          <nested:text property="nom"/>
       </nested:iterate>
       <nested:submit value="valider"/>
    </nested:form>

  3. #3
    Membre averti
    Profil pro
    dev
    Inscrit en
    Février 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2008
    Messages : 24
    Par défaut préremplir un formulaire avec les beans
    Mais, merci c_nvy, t vraiment éclairé toi!
    mais tu viens de toucher à ce que je voulais exactement evoquer, ces fichus nested !
    apperemment ce serait ma solution, je suis venu sur ce forum car j'ai fui un autre où on me parler de cette solution !
    donc, je me resigne, tu veux me dire que nested:XXX peut remplacer html:XXX
    je rappelle que j'ai un lookupdispatchaction qui a 3 m'éthodes pour gerer mes operations
    Bon en attendant, je vais regardr ce que tu propose honorable c_nvy!
    a plus

  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
    Pour modifier les champs des objets d'une liste, il est plus simple d'utiliser les tags nested car ils gèrent automatiquement les propriétés indexées.

    Si tu tiens vraiment à utiliser les tags html:text, il faut ajouter l'option indexed="true" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <logic:iterate name="nomDuFormBean" property="taListe" id="customer">
       <html:text name="customer" property="nom" indexed="true"/>
    </logic:iterate>
    et coder getter et setter indexés dans l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public Customer getCustomer(int i)
    {
        return (Customer) this.taListe.get(i);
    }
    public void setCustomer(int i,Customer customer)
    {
        this.taListe.set(i,customer) ;
    }
    Cet exemple de code suppose que les objets constituant ta liste sont de type Customer.

  5. #5
    Membre averti
    Profil pro
    dev
    Inscrit en
    Février 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2008
    Messages : 24
    Par défaut
    C'est génial, mais j'ai des erreurs à cause justement maintenant des stters et getters?. Je t'ai pas tout raconter, c'est peut etre pour ça que y a encore des pb

    A l'origine j'ai une action 1 que fait appelle à une classe metier ( connection-recuperation des donnee...)
    ensuite g creer une arraylist custumer qui contient les lignes de ma table
    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
             HttpSession session = request.getSession();
            /** Ici, la méthode qui fait la connection à la DataSource est appelée: */
            customerList = getCustomers() ;
            /** Ici, nous mettons le customerList dans le scope, pour pouvoir l'utiliser dans la page JSP: */
            //if(session.isNew())
            if(customerList  != null){
                session.setAttribute("allMyCustomers" , customerList);
            }
            return mapping.findForward(SUCCESS);
    ensuite sur la jsp j'ai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html:form action="/OperationAction">
            <logic:iterate id="custumer" name="allMyCustomers">
                <tr>
                     <td><html:text property="description_bis" name="custumer" indexed="true"><bean:write name="custumer" property="description"></bean:write></html:text></td>
                     <td><html:submit property="action"><bean:message key="button.save"/></html:submit></td>
                     <td><html:submit property="action"><bean:message key="button.edit"/></html:submit></td>
                     <td><html:submit property="action"><bean:message key="button.delete"/></html:submit></td>
                </tr>
            </logic:iterate>
    </html:form>

  6. #6
    Membre averti
    Profil pro
    dev
    Inscrit en
    Février 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2008
    Messages : 24
    Par défaut merci
    ALlo allo allo c_nvy!
    ça marche ta méthode, j'ai pas eu tort de dire que t'éclairé dés ta premiere intervention! Je sais qu'on ne cesse de revenir te dire tout le temp "ça marche"
    Mais là c'est un deblocage vital!
    porte bien, tu vas vivre longtemps ! comme tous ceux qui sont aussi dispo
    cio

  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
    Merci de bien vouloir utiliser les balises [CODE] ( bouton # de la fenêtre d'édition des messages).

    Ta liste customerList doit être une propriété de l'ActionForm avec getter et setter.

    Donc, au lieu de la mettre dans le scope session via ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.setAttribute("allMyCustomers" , customerList);
    il faut l''initialiser dans l'Action comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm = (TonActionForm) form ;
    tonActionForm.setCustomerList(customerList) ;
    ceci implique que tu dois référencer le form-bean via l'attribut name dans le mapping de cette Action dans le struts-config.xml et que l'attribut scope soit égal à session.

    Donc, dans l'ActionForm :
    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
    private List customerList = new ArrayList() ;
     
    public List getCustomerList()
    {
    	return this.customerList;
    }
    public void setCustomerList(List customerList)
    {
    	this.customerList= customerList;
    }
    public Customer getCustomer(int i)
    {
        return (Customer) this.customerList.get(i);
    }
    public void setCustomer(int i,Customer customer)
    {
        this.customerList.set(i,customer) ;
    }
    Et dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html:form action="/OperationAction">
    <logic:iterate id="customer" name="nomDuFormBean" property="customerList">
    <tr>
    <td><html:text  name="customer" property="description" indexed="true"/></td>
    <td><html:submit property="action"><bean:message key="button.save"/></html:submit></td>
    <td><html:submit property="action"><bean:message key="button.edit"/></html:submit></td>
    <td><html:submit property="action"><bean:message key="button.delete"/></html:submit></td>
    </tr>
    </logic:iterate>
    </html:form>

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/07/2007, 01h16
  2. [WinDev 10] Interagir avec les propriétés Windows
    Par clic clic dans le forum WinDev
    Réponses: 4
    Dernier message: 10/10/2006, 12h19
  3. Fonction print avec les propriétés d'impression
    Par Alexandrebox dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/08/2006, 13h30
  4. Ouvrir un formulaire presaisie avec les champs liés
    Par FrédéricCM dans le forum Access
    Réponses: 1
    Dernier message: 02/06/2006, 22h14
  5. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 16h59

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