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

Seam Java Discussion :

[Seam, H2, Tomcat]Ajout base de données


Sujet :

Seam Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 97
    Par défaut [Seam, H2, Tomcat]Ajout base de données
    Bonjour,

    Je suis débutant sur Seam et j'essaye de faire fonctionner ce code pour ajouter un produit dans la bd :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    package coursjsf;
     
    import javax.ejb.Init;
    import javax.persistence.Entity;
    import javax.persistence.Id;
     
    import org.hibernate.validator.Length;
    import org.jboss.seam.ScopeType;
    import org.jboss.seam.annotations.Name;
    import org.jboss.seam.annotations.Scope;
     
    /**
     * Entité produit, qui dans un cas réel serait une entité persistante dans la base de données.
     */
    @Entity
    @Name("produit")
    @Scope(ScopeType.SESSION)
    public class Produit {
     
    	@Id
    	@Length(max=10)
    	private String code;
     
    	@Length(max=100)
    	private String libelle;
     
    	@Length(max=5000)
    	private String description;
     
     
    	Produit() {
    	}
     
    	/**
             * Crée un produit, avec un code servant d'identifiant, un libellé court et une description plus détaillé.
             * @param code
             * @param libelle
             * @param description
             */
    	public Produit(String code, String libelle, String description) {
    		this.code = code;
    		this.libelle = libelle;
    		this.description = description;
    	}
     
     
    	/**
             * Renvoie le code du produit, qui sert d'identifiant. Chaque produit a un code différent.
             * @return le code du produit.
             */
    	public String getCode() {
    		return code;
    	}
     
    	/**
             * Renvoie le libellé du produit.
             * @return le libellé du produit.
             */
    	public String getLibelle() {
    		return libelle;
    	}
     
    	/**
             * Renvoie la description détaillée du produit, qui est au format HTML.
             * @return la description du produit.
             */
    	public String getDescription() {
    		return description;
    	}
     
    }
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    package coursjsf;
    import javax.ejb.Remove;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
     
    import org.hibernate.validator.Valid;
    import org.jboss.seam.annotations.In;
    import org.jboss.seam.annotations.JndiName;
    import org.jboss.seam.annotations.Name;
     
    @Stateless
    @Name("addManagerProduit")
    @JndiName("addManagerProduit")
    public class AddActionProduit {
     
    	@PersistenceContext
    	private EntityManager em;
     
    	@Valid 
    	@In
    	private Produit produit;
     
    	public void addProduit()
    	{
    		em.persist(produit);	
    	}
     
    	@Remove
    	public void remove ()
    	{
     
    	}
    }
    JSF :

    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
     
    <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:s="http://jboss.com/products/seam/taglib"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:a4j="http://richfaces.org/a4j"
    	xmlns:rich="http://richfaces.org/rich"
    	xmlns:c="http://java.sun.com/jstl/core"
    	xmlns:io="http://www.iocean.fr/iotags">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link href="css/site.css" rel="stylesheet" type="text/css" />
    <title>TP JSF/Seam</title>
    </head>
     
    <body>
    <h:form>
    	<h:inputText id="username" value="#{produit.libelle}" />
    	<h:commandButton value="Valider" action="#{addManagerProduit.addProduit}" />
    </h:form>
    </body>
    </html>
    Une exception survient :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
     
    javax.servlet.ServletException: Could not instantiate Seam component: produit
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
    	org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
    	org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
     
    cause m�re
     
    org.jboss.seam.InstantiationException: Could not instantiate Seam component: produit
    	org.jboss.seam.Component.newInstance(Component.java:2096)
    	org.jboss.seam.Component.getInstance(Component.java:1978)
    	org.jboss.seam.Component.getInstance(Component.java:1940)
    	org.jboss.seam.Component.getInstance(Component.java:1934)
    	org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
    	org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
    	org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:166)
    	org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:53)
    	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
    	com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
    	org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
    	org.jboss.el.parser.AstValue.getValue(AstValue.java:63)
    	org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    	com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
    	javax.faces.component.UIOutput.getValue(UIOutput.java:184)
    	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
    	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
    	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
    	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
    	javax.faces.component.UIComponent.encodeAll(UIComponent.java:946)
    	javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
    	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
    	javax.faces.component.UIComponent.encodeAll(UIComponent.java:936)
    	javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
    	com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
    	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
    	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:196)
    	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
    	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
    	org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
    	org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
     
    cause m�re
     
    java.lang.NoSuchMethodException: coursjsf.Produit.<init>()
    	java.lang.Class.getConstructor0(Unknown Source)
    	java.lang.Class.getConstructor(Unknown Source)
    	org.jboss.seam.Component.instantiateEntityBean(Component.java:1375)
    	org.jboss.seam.Component.instantiate(Component.java:1318)
    	org.jboss.seam.Component.newInstance(Component.java:2074)
    	org.jboss.seam.Component.getInstance(Component.java:1978)
    	org.jboss.seam.Component.getInstance(Component.java:1940)
    	org.jboss.seam.Component.getInstance(Component.java:1934)
    	org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
    	org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
    	org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:166)
    	org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:53)
    	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
    	com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
    	org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
    	org.jboss.el.parser.AstValue.getValue(AstValue.java:63)
    	org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    	com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
    	javax.faces.component.UIOutput.getValue(UIOutput.java:184)
    	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
    	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
    	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
    	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
    	javax.faces.component.UIComponent.encodeAll(UIComponent.java:946)
    	javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
    	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
    	javax.faces.component.UIComponent.encodeAll(UIComponent.java:936)
    	javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
    	com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
    	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
    	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:196)
    	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
    	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
    	org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
    	org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
    Avez-vous une idée ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Par défaut
    Salut,

    Attention, veille à bien séparer tes données persistantes de tes composant Seam.
    Ainsi, ta classe produit est bien annotée Entity mais ne doit pas être un composant Seam donc pas annotée name...

    ta classe produit doit ressemblé à ça :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    package coursjsf;
     
    import javax.persistence.Entity;
    import javax.persistence.Id;
     
    import org.hibernate.validator.Length;
     
    /**
     * Entité produit, qui dans un cas réel serait une entité persistante dans la base de données.
     * Ici les produits sont simplement créés au démarrage, lors de l'initialisation du composant "catalogue".  
     */
    @Entity
    public class Produit {
     
    	@Id
    	@Length(max=10)
    	private String code;
     
    	@Length(max=100)
    	private String libelle;
     
    	@Length(max=5000)
    	private String description;
     
    	Produit() {
    	}
     
    	/**
             * Crée un produit, avec un code servant d'identifiant, un libellé court et une description plus détaillé.
             * @param code
             * @param libelle
             * @param description
             */
    	public Produit(String code, String libelle, String description) {
    		this.code = code;
    		this.libelle = libelle;
    		this.description = description;
    	}
     
    	/**
             * Renvoie le code du produit, qui sert d'identifiant. Chaque produit a un code différent.
             * @return le code du produit.
             */
    	public String getCode() {
    		return code;
    	}
     
    	/**
             * Renvoie le libellé du produit.
             * @return le libellé du produit.
             */
    	public String getLibelle() {
    		return libelle;
    	}
     
    	/**
             * Renvoie la description détaillée du produit, qui est au format HTML.
             * @return la description du produit.
             */
    	public String getDescription() {
    		return description;
    	}
     
    }
    Si tu veux ajouter un produit, il te faut faire un formulaire dans lequel doit être renseignés le libellé et la description du nouveau produit.
    Ton service addManagerProduit doit contenir lui un 2 attributs String (libelle et description) sur lesquel sont mappé les champs de ton formulaire.
    Dans ta page, créé un bouton qui va appeler une methode enregistrer dans ton service et c'est dans ta méthode enregistrer que tu va créer une nouvelle instance de produit avec ce qui a été passé dans ton formulaire. N'oublies pas non plus d'enregistrer ce nouveau produit en base (em.persist(produit))

  3. #3
    Membre chevronné

    Inscrit en
    Février 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 122
    Par défaut
    Attention, veille à bien séparer tes données persistantes de tes composant Seam.
    Ainsi, ta classe produit est bien annotée Entity mais ne doit pas être un composant Seam donc pas annotée name...
    bien sur que si tu peux les annoter @Name, sinon le s:convertEntity, et tout les mécanisme EntityQuery, EntityHome et les appels sur les entity via EL ont été mis en place dans Seam pour rien ... Dès le début de la doc de Seam les Entités sont annotés @Name ...

    Le mapping n'a pas a être fait sur des champs dans ton service, on est pas en JSF pur ou en Struts ou on doit faire un objet interface entre JSF et la couche donnée qui ne fait que recopier les données du formulaire vers un service type EJB : on est en Seam.
    Tu devrais lire la doc avant d'induire des débutants en erreurs avec des affirmations non fondées monster.

    Le but des composant EntityHome est de pouvoir mapper le formulaire directement à une instance d'entité (entre autre), dans le cas d'action CRUD simple.
    Les composants EntityQuery permettent quant à eux de gérer sans aucun effort une liste affichable, dans n'importe quel composant d'itération JSF ou richfaces.

    Ederf je te conseil de regarder la doc Seam reference au niveau des composant EntityHome de Seam, pour débuter avec Seam c'est très bien.

    Par exemple :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    /**
     * Product Home.
     * @author mikrob
     *
     */
    @Name("productHome")
    public class productHome extends EntityHome<Produit> {
     
        /**
         *
         */
        private static final long serialVersionUID = 3141975971653011468L;
     
        /**
         * logger.
         */
        @Logger
        private Log logger;
     
     
        /**
         * Used to get the request parameter for manage the entity passed.
         */
        @RequestParameter
        private Long productId;
     
     
        /**
         * Return id for the object.
         * @return {@link ProductHome}
         */
        @Override
        public Object getId() {
            if (textEntryId == null) {
                return super.getId();
            } else {
                return productId;
            }
        }
     
        /**
         * Create a new conversation.
         */
        @Override @Begin
        public void create() {
            super.create();
     
        }
     
        /**
         * Persist method override.
         * Ici tu peux modifier le comportement de ton objet lorsqu'il est persisté
         * @return success if can persist.
         */
        @Override
        public String persist() {
            return super.persist();
        }
     
        /**
         * update override. Ici tu peux modifier son comportement lorsqu'il est      
         *mis a jour
         * @return sucess if succesfuly updated.
         */
        @Override
        public String update() {
            return super.update();
        }
     
    }
    Tu pourras alors mapper les "value" de tes champs de formulaire a :
    #{productHome.instance.nomduChamp}.

    Enfin si tu veux gérer ta liste CRUD sans trop d'efforts tu peux utiliser EntityQuery :
    par exemple :

    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
     
    /**
     * Bean intended to manage the list of product.
     * @author mikrob
     *
     */
    @Name("productList")
    public class ProductList extends EntityQuery<Produit> {
     
        /**
         *
         */
        private static final long serialVersionUID = 145824349159202737L;
     
        /**
         * Constructor.
         */
        public ProductList() {
            setEjbql("select product from Product product");
        }
    }

    Enfin si tu as besoin d'un comportement bien spécifique, et qui sort du registre CRUD, tu peux créer simplement un composant Seam pour gérer ta liste : regarde dans la doc ce que l'on peut faire avec @Factory @DataModel et @DataModelSelection, ça permet de développer une liste managée très vite, et sans passer par les DataModel et autre développement de Select items JSF.

    Et pour finir, je tiens quand même à ajouter que la simplcitié apportée par Seam ne fait pas de Seam un framework facile d'accès. L'apprentissage de Seam ne dispense pas d'apprendre le fonctionnement de JSF, EJB, JPA et Hibernate.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Par défaut
    Enfin attention mikrob aussi.

    La méthode que je préconise marche dans TOUS les cas. Dans le cas de l'utilisation d'un EntityHome, il y aura des problèmes si tu veux être en Scope PAGE. En effet, la classe EntityHome (ou Home je ne sais plus) est de Scope CONVERSATION....

  5. #5
    Membre chevronné

    Inscrit en
    Février 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 122
    Par défaut
    Ta méthode est pas Seam du tout c'est du jsf à l'ancienne.

    Si tu veux faire du scope page tu fais un composant Seam en scope page et une factory. Toujours avec des listes d'entités.
    Ou bien tu le fais sans factory, mais en créant ta méthode dans une méthode @Create sur un objet @AutoCreate, ou bien ...
    J'ai au moins 3 ou 4 façons propre de faire une liste en Scope Page, sans passer par les méthode JSF pur qui obligent à avoir des objets intermédiaires.

Discussions similaires

  1. erreur ajout base de données
    Par smile_88 dans le forum Hibernate
    Réponses: 6
    Dernier message: 23/11/2012, 14h52
  2. Réponses: 5
    Dernier message: 21/01/2011, 10h43
  3. Connecter Tomcat à une base de données Microsoft Access
    Par welcometohell38 dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 18/05/2010, 09h39
  4. Ajout base de données Formulaire
    Par eliet dans le forum Langage
    Réponses: 1
    Dernier message: 07/09/2008, 00h08
  5. [SQL] Base de données d'images - ajouter des métadonnées
    Par gandalf_le_blanc dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/06/2004, 19h52

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