Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/12/2014, à 11:02

ibra21

java EE - JSF (Problème d'affichage des valeurs d'une <h:datatable)

Quand j'exécute mon code la page s'affiche sans erreur et j'ai les entête de la table mais le contenu ne s'affiche pas.

Voici le code de ma page JSF

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html 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:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core">

    <body>

        <ui:composition template="./template/base.xhtml">

            <ui:define name="top">
                top
            </ui:define>

            <ui:define name="content">
                <f:view>


                    <h:form>
                        <h1><h:outputText value="Liste des formations"/></h1>
                        <h:dataTable value="#{formationBean.listeFormations}" var="item">
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="IdFormation"/>
                                </f:facet>
                                <h:outputText value="#{item.formationPK.idFormation}"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="NomFormation"/>
                                </f:facet>
                                <h:outputText value="#{item.nomFormation}"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="DetailFormation"/>
                                </f:facet>
                                <h:outputText value="#{item.detailFormation}"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="Prerequis"/>
                                </f:facet>
                                <h:outputText value="#{item.prerequis}"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="NbDatesProposees"/>
                                </f:facet>
                                <h:outputText value="#{item.nbDatesProposees}"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="Formateur"/>
                                </f:facet>
                                <h:outputText value="#{item.formateur}"/>
                            </h:column>
                        </h:dataTable>
                    </h:form>
                </f:view>

            </ui:define>

            <ui:define name="bottom">
                bottom
            </ui:define>

        </ui:composition>

    </body>
</html>

voici le code de mon Managed Bean

@ManagedBean(name = "FormationBean")
@RequestScoped
public class FormationBean {
    
    @EJB
    private FormationSB formationSB;
    
    private List<Formation> listeFormations;
    
    /**
     * Creates a new instance of FormationBean
     */
    public FormationBean() {
    }
    
    @PostConstruct
    public void initialiser(){
        listeFormations = new ArrayList<>();
        listeFormations = formationSB.listerFormations();
    }

    public List<Formation> getListeFormations() {
        return listeFormations;
    }
    
    
}

le code de mon session bean

@Stateless
@LocalBean
public class FormationSB {
    
    public FormationSB(){
    }
    
    @EJB
    private FormationFacadeLocal formationFacade;

    public List<Formation> listerFormations() {
        return formationFacade.findAll();
    }
}

le code de mon DAO

@Stateless
public class FormationDAO extends AbstractDAO<Formation> implements FormationFacadeLocal {
    @PersistenceContext(unitName = "PlaniFRH-ejbPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public FormationDAO() {
        super(Formation.class);
    }
    
}

le DAO extends cette classe abstraite

public abstract class AbstractDAO<T> {
    private Class<T> entityClass;

    public AbstractDAO(Class<T> entityClass) {
        this.entityClass = entityClass;
    }

    protected abstract EntityManager getEntityManager();

    public void create(T entity) {
        getEntityManager().persist(entity);
    }

    public void edit(T entity) {
        getEntityManager().merge(entity);
    }

    public void remove(T entity) {
        getEntityManager().remove(getEntityManager().merge(entity));
    }

    public T find(Object id) {
        return getEntityManager().find(entityClass, id);
    }

    public List<T> findAll() {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(entityClass));
        return getEntityManager().createQuery(cq).getResultList();
    }

    public List<T> findRange(int[] range) {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(entityClass));
        javax.persistence.Query q = getEntityManager().createQuery(cq);
        q.setMaxResults(range[1] - range[0] + 1);
        q.setFirstResult(range[0]);
        return q.getResultList();
    }

    public int count() {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
        cq.select(getEntityManager().getCriteriaBuilder().count(rt));
        javax.persistence.Query q = getEntityManager().createQuery(cq);
        return ((Long) q.getSingleResult()).intValue();
    }
    
}

Est ce que quelqu'un a une idée sur l'origine de mon problème?
Merci d'avance pour votre aide.

Hors ligne