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

Spring Web Java Discussion :

Mapping entre un formulaire et un objet en session [MVC]


Sujet :

Spring Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 500
    Par défaut Mapping entre un formulaire et un objet en session
    Bonjour,

    J'ai un formulaire basique :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form:form action="account" method="post" class="form-horizontal" modelAttribute="sessionBean.person">
    <!-- some form input elements like -->
    <label class="col-sm-3 control-label">E-mail</label><div class="col-md-4"><form:input cssClass="form-control" path="email" maxlength="64" /></div>
    <!-- submit button -->
    </form:form>
    Dont le controlleur est le suivant :
    Code java : 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
    @Controller
    @SessionAttributes("sessionBean")
    public class AccountController {
        @Autowired
        private SessionBean sessionBean;
     
        /** Display account page and process updates: password, personnal information, company, delivery and billing addresses
         * @return JSP name
         */
        @RequestMapping("/account")
        public String accountPage(/* request params */) {
            //checks not displayed
            Person p=sessionBean.getPerson();
            s.createQuery("UPDATE Person SET tittle=:t, firstname=:fn, lastname=:ln, phone=:p, fax=:f, email=:e  WHERE id=:id")
                .setParameter("t", p.getTitle())
                .setParameter("fn", p.getFirstname())
                .setParameter("ln", p.getLastname())
                .setParameter("p", p.getPhone())
                .setParameter("f", p.getFax())
                .setParameter("e", p.getEmail())
                .setParameter("id", p.getId())
                .executeUpdate();
        }
    }
    Les classes SessionBean et personnes sont définies ci-dessous :
    Code java : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    @Component
    @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
    public class SessionBean implements Serializable {
        private static final long serialVersionUID = 9139554982970790165L;
        private final String id = UUID.randomUUID().toString();
        private Person person = null;
        private String redirect=null;
        private Order3d order3d=new Order3d();
        //getter and setters
    }
     
    @Entity
    @Table (name="person")
    public class Person implements Serializable {
        private static final long serialVersionUID = 3005461811554821039L;
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        @Column (name="id")
        private int id;
        @Column (name="email")
        private String email;
        @Column (name="company")
        private String company;
        @Column (name="siret")
        private long siret;
        @Column (name="payment")
        private String payment;
        @Column (name="title")
        private String title;
        @Column (name="firstname")
        private String firstname;
        @Column (name="lastname")
        private String lastname;
        @Column (name="password", columnDefinition="char", length=64)
        private String password;
        @Column (name="phone")
        private String phone;
        @Column (name="fax")
        private String fax;
    }

    Dans mon formulaire je récupère sans problème les données à afficher stockées dans Person, mais, quand je veux exécuter mon UPDATE, les données soumises ne sont pas prises en compte.

  2. #2
    Membre chevronné Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Par défaut
    Quand tu vas en debug, il t'affiche quelque chose à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Person p=sessionBean.getPerson();
    ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 500
    Par défaut
    Oui mais j'ai les valeurs avant modification

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Pour tes paramètres enlève les deux points :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .setParameter("t", p.getTitle())
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .setParameter(":t", p.getTitle())

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 500
    Par défaut
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    			Person p=sessionBean.getPerson();
    			s.createQuery("UPDATE Person SET title=:t, firstname=:fn, lastname=:ln, phone=:p, fax=:f, email=:e  WHERE id=:id")
    				.setParameter("t", p.getTitle())
    				.setParameter("fn", p.getFirstname())
    				.setParameter("ln", p.getLastname())
    				.setParameter("p", p.getPhone())
    				.setParameter("f", p.getFax())
    				.setParameter("e", p.getEmail())
    				.setParameter("id", p.getId())
    				.executeUpdate();
    J'ai toujours le même problème, je ne récupère pas les données modifiées.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Et tu n'as aucun message d'erreur ?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 500
    Par défaut
    Non, je produits ce résultat
    Hibernate: update person set title=?, firstname=?, lastname=?, phone=?, fax=?, email=? where id=?
    13:47:29,671 TRACE BasicBinder:84 - binding parameter [1] as [VARCHAR] - M
    13:47:29,672 TRACE BasicBinder:84 - binding parameter [2] as [VARCHAR] - Seb
    13:47:29,673 TRACE BasicBinder:84 - binding parameter [3] as [VARCHAR] - Seb
    13:47:29,673 TRACE BasicBinder:84 - binding parameter [4] as [VARCHAR] - 0612345678
    13:47:29,674 TRACE BasicBinder:84 - binding parameter [5] as [VARCHAR] -
    13:47:29,675 TRACE BasicBinder:84 - binding parameter [6] as [VARCHAR] - something@yopmail.com
    13:47:29,677 TRACE BasicBinder:84 - binding parameter [7] as [INTEGER] - 1
    Alors que j'ai changé le numéro de téléphone par 0687654321

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

Discussions similaires

  1. relations entre les formulaires
    Par PAUL87 dans le forum Access
    Réponses: 5
    Dernier message: 17/09/2005, 11h48
  2. liens entre sous formulaires
    Par delpiero10 dans le forum Access
    Réponses: 1
    Dernier message: 07/09/2005, 23h09
  3. Formulaire - lien JS - objet Null ou pas objet...
    Par Romalafrite dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/10/2004, 14h08
  4. [C#] Transférer des informations entre 2 formulaires
    Par monoeilouais dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/07/2004, 17h21
  5. touche entrée dans formulaire
    Par pram dans le forum XMLRAD
    Réponses: 8
    Dernier message: 15/04/2003, 09h13

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