bonjour je suis débutante en jsf ,mon probleme c'est que je veux récupérer les données de la base dans un datatable,mais il m'affiche un erreurs dans l'evenement :selection.voila mon code.


code XHTML:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<p:dataTable id="sos" var="societe" value="#{societeBean.toutes_les_sos}" paginator="true" rows="10" selection="#{societeBean.idSos}">
			<p:column selectionMode="multiple" style="width:18px" />
	<p:column headerText="Société">  
            #{societe.raisonSociale}  
        </p:column>
				</p:dataTable>
classe 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
 
public class SocieteBean {
	private Long idSos;
    private List<Societe> toutes_les_sos;
 
	public Long getIdSos() {
		return idSos;
	}
 
	public void setIdSos(Long idSos) {
		this.idSos = idSos;
	}
 
 
	public List<Societe> getToutes_les_sos() {
		return toutes_les_sos;
	}
 
	public void setToutes_les_sos(List<Societe> toutes_les_sos) {
		this.toutes_les_sos = toutes_les_sos;
	}
 
	@PostConstruct
	public void init(){
 
		toutes_les_sos= new DaoSociete().findAll();
 
 
 
	}
}
classe Dao:

public class DaoSociete {

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
	private EntityManagerFactory emf = Persistence.createEntityManagerFactory("EMALL_JPA");   
	private EntityManager em = emf.createEntityManager();
 
	public void ajouter(Societe societe){
		try{
			this.begin();
			em.persist(societe);
			this.commit();
		}catch(Exception e){
			System.out.println("Erreur lors de l'ajout de la société");
			e.printStackTrace();
		}
	}
 
	public void delete(Societe societe){
		try{
			this.begin();
			em.remove(societe);
			this.commit();
		}catch(Exception e){
			System.out.println("Erreur lors de la suppression de la société");
			e.printStackTrace();
		}
	}
 
	public Societe find(long id){
		return em.find(Societe.class, id);
	}
 
	public void update(Societe societe){
		try{
			this.begin();
			Societe soc=em.find(Societe.class,societe.getId());
			soc.setRaisonSociale(societe.getRaisonSociale());
			em.merge(soc);
			this.commit();
		}catch(Exception e){
			System.out.println("Erreur lors de la modification de la societe");
			e.printStackTrace();
		}
	}
 
	public List<Societe> findAll(){
		Query query = em.createQuery("select c from Societe c");
		return (List<Societe>) query.getResultList();
	}
 
	public Societe findByDescription(String description){
 
		try {
			Query query = em.createQuery("select c from Societe c where c.raisonSociale=:desc");
			query.setParameter("desc", description);
			return (Societe)query.getSingleResult();
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}
erreur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled.

merci d'avance.