Bonjour,
Je n'arrive pas à faire fonctionner la balise <s:convertEntity>
J'ai passé plus de 8 heures à chercher sur les forums et les tutorials mais rien n'y fait.
Sans le convert, j'ai l'erreur suivante:
Erreur de conversion quand la valeur 'com.pndata.pnasso.business.bo.ReferentielpaysBO@b56ec6e1' est commise pour le modéle 'null Converter'.
Alors que sur un projet sans Seam, on récupère parfaitement l'objet sans faire de conversion.
Bref, j'ajoute le <s:convertEntity> et j'ai alors l'erreur:
Could not instantiate Seam component: org.jboss.seam.ui.entityLoader
J'ai bien sûr tester ce que la documentation indique à ce sujet, à savoir des modifications sur le components.xml et éventuellement hibernet.properties.
J'ai généralement une erreur de syntaxe par rapport aux instructions à ajouter (alors qu'elles sont identiques aux examples montrés) ou sinon aucun changements à l'exécution.
Utiliser un ID au lieu d'un objet est une solution. Mais ça demande plus de gestion puisqu'il faut reconvertir l'id en objet dans le backing-bean. Sans compter que pour les lists avec clé primaires multiples, il faudra créer une clé fictive dans le BO en @transient et la gérer manuellement.
Bref, cette solution n'est pas idéale...
Tout aide serait bienvenue
JSF:
Un bean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <h:selectOneMenu id="selectPays" value="#{individu.pays}" rendered="#{individuIdentiteAction.mode != 0}" style="width:150px;"> <s:selectItems value="#{listePays}" var="p" label="#{p.libpays}"/> </h:selectOneMenu>
Le service concerné:
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 @Name("paysList") @Scope(ScopeType.APPLICATION) public class PaysList implements java.io.Serializable { private static final long serialVersionUID = -7402234629771271315L; @In("#{referenceService}") protected ReferenceService referenceService; @Out private List<ReferentielpaysBO> listePays; @Create @Factory("listePays") public void initListe() { this.listePays = referenceService.retrievePays(); } public List<ReferentielpaysBO> getListePays() { return listePays; } public ReferentielpaysBO getPays(String code) { ReferentielpaysBO pays = new ReferentielpaysBO(); for (ReferentielpaysBO p : listePays) { if (p.getCode2pays().equals(code)) pays = p; } return pays; } }
Components.xml:
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 @Stateless @Name("referenceService") public class ReferenceServiceImpl implements ReferenceService { @PersistenceContext private EntityManager em; @SuppressWarnings("unchecked") @Override public java.util.List<ReferentielpaysBO> retrievePays() { javax.persistence.Query q = em.createNamedQuery(ReferentielpaysBO.QN.ALL); return q.getResultList(); } @SuppressWarnings("unchecked") @Override public java.util.List<ReferentielciviliteBO> retrieveCivilites() { javax.persistence.Query q = em.createNamedQuery(ReferentielciviliteBO.QN.ALL); return q.getResultList(); } @SuppressWarnings("unchecked") @Override public java.util.List<RefprenomsBO> retrievePrenoms() { javax.persistence.Query q = em.createNamedQuery(RefprenomsBO.QN.ALL); return q.getResultList(); } @SuppressWarnings("unchecked") @Override public java.util.List<RefvillesBO> retrieveVilles() { javax.persistence.Query q = em.createNamedQuery(RefvillesBO.QN.ALL); return q.getResultList(); } }
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 <?xml version="1.0" encoding="UTF-8"?> <components xmlns="http://jboss.com/products/seam/components" xmlns:core="http://jboss.com/products/seam/core" xmlns:security="http://jboss.com/products/seam/security" xmlns:transaction="http://jboss.com/products/seam/transaction" xmlns:web="http://jboss.com/products/seam/web" xmlns:theme="http://jboss.com/products/seam/theme" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.2.xsd http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.2.xsd http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.2.xsd http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.2.xsd http://jboss.com/products/seam/theme http://jboss.com/products/seam/theme-2.2.xsd"> <core:init jndi-pattern="pnasso-ear/#{ejbName}/local" debug="true" distributable="false"/> <core:manager conversation-timeout="120000" concurrent-request-timeout="500" conversation-id-parameter="cid"/> <transaction:ejb-transaction/> <security:identity authenticate-method="#{authenticator.authenticate}"/> <web:character-encoding-filter encoding="UTF-8" override-client="true" url-pattern="*.seam" /> <theme:theme-selector cookie-enabled="true"> <theme:available-themes> <value>default</value> </theme:available-themes> </theme:theme-selector> </components>
Partager