s:ConvertEntity et configuration du projet
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:
Code:
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:
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:
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:
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> |