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&eacute;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:
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>
Un bean:
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;
	}
 
}
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
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();
	}
 
}
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
 
<?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>