[JSF] Debutant rich:dataTable
Bonjour,
Je débute dans les EJB3 et le JSF.
J'essaye donc de créer un dataTable voici mon code
Ma page jsf:
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
| <h:form>
<rich:dataTable value="#{ImportBean.jobs}" var="jobs" width="300px">
<f:facet name="header">
<h:outputText value="Tableau des logs"/>
</f:facet>
<rich:column sortBy="#{jobs.nom}">
<f:facet name="header">
<h:outputText value="Nom"/>
</f:facet>
<h:outputText value="#{jobs.nom}"/>
</rich:column>
<rich:column sortBy="#{jobs.nom}">
<f:facet name="header">
<h:outputText value="Debut"/>
</f:facet>
<h:outputText value="#{jobs.nom}"/>
</rich:column>
<rich:column sortBy="#{jobs.nom}">
<f:facet name="header">
<h:outputText value="Fin"/>
</f:facet>
<h:outputText value="#{jobs.nom}"/>
</rich:column>
</rich:dataTable>
</h:form> |
Ma class 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
|
public class JobsBean {
private List<Job> jobs;
@EJB
private LogDstageSessionBeanLocal<Job> ufl;
public void ImportBean() {
List<Job> j = new ArrayList<Job>();
//imports=ufl.findImports();
j.add(new Job(1,"job 1"));
j.add(new Job(2,"job 2"));
//this.jobs=new ListDataModel(j);
//return (new ListDataModel(imports));
}
public List<Job> getJobs(){
List<Job> j = new ArrayList<Job>();
//jobs=ufl.findjobs();
j.add(new Job(1,"job 1"));
j.add(new Job(2,"job 2"));
j.add(new Job(3,"job 3"));
j.add(new Job(4,"job 4"));
j.add(new Job(5,"job 5"));
this.jobs=j;
return jobs;
}
} |
Ma classe session:
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 38 39 40 41 42 43 44
| @Stateless
public class LogDstageSessionBean<T> implements LogDstageSessionBeanLocal<T> {
@PersistenceContext(unitName="LogDstage-ejbPU")
EntityManager em;
public T create(T entity) {
em.persist(entity);
return entity;
}
public T edit(T entity) {
return em.merge(entity);
}
public void remove(T entity) {
T entityToDel=em.merge(entity);
em.remove(entityToDel);
}
public List<T> find(Class<T> entityDescription) {
return em.createQuery("select object(o) from "+ entityDescription.getSimpleName() + "as o").getResultList();
}
public T findByPrimaryKey(Class<T> entityDescription, Object id){
return em.find(entityDescription,id);
}
public User getUserWithLoginAndPassword(String login, String password)
{
Query q = em.createQuery("select object(o) from User as o where o.login= :id");
q.setParameter("id",login);
List<User> l=q.getResultList();
if(l.size()>0)
{
User user = l.get(0);
if(user.getMdp().equals(password) || true)
{
return user;
}
}
return null;
/*User u=new User(1, login, password, 0, "tttt");
return u;*/
} |
Cette classe m'a était conseil pour ne pas avoir plusieurs classes sessions!!
Et ma classe entity Job:
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| @Entity
@Table(name = "job")
@NamedQueries({@NamedQuery(name = "Job.findAll", query = "SELECT j FROM Job j")})
public class Job implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idjob")
private Integer idjob;
@Basic(optional = false)
@Column(name = "nom")
private String nom;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "job")
private Collection<UserJobWar> userJobWarCollection;
@JoinColumn(name = "log_idlog", referencedColumnName = "idlog")
@ManyToOne(optional = false)
private FicLog logIdlog;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "jobIdjob")
private Collection<Import> importCollection;
public Job() {
}
public Job(Integer idjob) {
this.idjob = idjob;
}
public Job(Integer idjob, String nom) {
this.idjob = idjob;
this.nom = nom;
}
public Integer getIdjob() {
return idjob;
}
public void setIdjob(Integer idjob) {
this.idjob = idjob;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public Collection<UserJobWar> getUserJobWarCollection() {
return userJobWarCollection;
}
public void setUserJobWarCollection(Collection<UserJobWar> userJobWarCollection) {
this.userJobWarCollection = userJobWarCollection;
}
public FicLog getLogIdlog() {
return logIdlog;
}
public void setLogIdlog(FicLog logIdlog) {
this.logIdlog = logIdlog;
}
public Collection<Import> getImportCollection() {
return importCollection;
}
public void setImportCollection(Collection<Import> importCollection) {
this.importCollection = importCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (idjob != null ? idjob.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Job)) {
return false;
}
Job other = (Job) object;
if ((this.idjob == null && other.idjob != null) || (this.idjob != null && !this.idjob.equals(other.idjob))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.eqx.logdstage.ejb3.entity.Job[idjob=" + idjob + "]";
}
} |
Lorsque j'essaye d'afficher ma page jsf je ne vois uniquement l'entête du tableau et donc pas les données. je cherche désespérément depuis vendredi la solution :roll:.