2017-01-27 8 views
0

В моем веб-проекте java я хочу проверить, как отображать список в dataTable, у меня есть образец, в котором есть отображение этого. Я пытаюсь следовать образцу, поэтому я создал новую страницу xhtml, в которой я скопировал dataTable образца, я добавил новый dataTable, и я создал новый bean-компонент, названный StatPanne. Компонент образца - NaturePanneController. Проблема в том, что новый dataTable пуст. Я понимаю, что список, возвращенный новым bean-компонентом, пуст, но я не знаю, почему, пожалуйста, не могли бы вы мне помочь. Спасибо.Как отображать данные из базы данных в dataTable?

@Name("naturePanneController") 
@Scope(ScopeType.CONVERSATION) 
public class NaturePanneController { 
@In 
EntityManager entityManager; 
@In 
@Out 
NaturePanne naturePanne; 

private Boolean edit = false; 
private Integer paramid; 

public Boolean getEdit() { 
    return edit; 
} 

public Integer getParamid() { 
    return paramid; 
} 

public void setParamid(Integer paramid) { 
    this.paramid = paramid; 
} 

public void setEdit(Boolean edit) { 
    this.edit = edit; 
} 

public List<NaturePanne> getNaturePanne() { 
return entityManager.createQuery("select a from NaturePanne a") 
      .getResultList(); 
} 


public void selectNP(NaturePanne np) { 
    naturePanne = np; 

} 

public void supprimer() { 
    if (naturePanne != null) { 
     //if (nn != null) { 
     Integer a = getParamid(); 
     NaturePanne np = entityManager.find(NaturePanne.class, a); 
     entityManager.remove(np); 
    } 
} 

public void ajouter(ActionEvent e) { 
    entityManager.persist(naturePanne); 
    naturePanne = new NaturePanne(); 
} 


public void mettreajour() { 

    if (getEdit() == true) { 
     setEdit(false); 
    } else { 
     setEdit(true); 
    }}} 

Мой новый боб StatPanne.java

@Name("statPanne") 
@Scope(ScopeType.CONVERSATION) 
public class StatPanne { 
@In 
EntityManager entityManager; 

@In 
@Out 
NaturePanne naturePanne; 


private Boolean edit = false; 
private Integer paramid; 



public Boolean getEdit() { 
    return edit; 
} 

public Integer getParamid() { 
    return paramid; 
} 

public void setParamid(Integer paramid) { 
    this.paramid = paramid; 
} 

public void setEdit(Boolean edit) { 
    this.edit = edit; 
} 

public List<NaturePanne> getNaturePanne() { 
    return entityManager.createQuery("select a from NaturePanne a").getResultList(); 


} 


public void selectNP(NaturePanne np) { 
    naturePanne = np; 
} 

public void supprimer() { 
if (naturePanne != null) { 
    //if (nn != null) { 
    Integer a = getParamid(); 
    NaturePanne np = entityManager.find(NaturePanne.class, a); 
    entityManager.remove(np); 
} 
} 

public void ajouter(ActionEvent e) { 
entityManager.persist(naturePanne); 
naturePanne = new NaturePanne(); 
} 


public void mettreajour() { 

if (getEdit() == true) { 
    setEdit(false); 
} else { 
    setEdit(true);}}} 

Моя страница XHTML, которая содержит два DataTables

<!-- the new dataTable: empty table --> 
<h:form> 
<rich:dataTable value="#{statPanne.naturePanne}" var="lp"> 
<h:column headerClass="headerleftfacet"> 
<f:facet name="header"> 
<h:outputText value="#{msg.nom_panne}" /> 
</f:facet> 
<h:outputText id="outtt" value="#{lp.lib_naturepanne}"/>  
</h:column> 
</rich:dataTable> 
</h:form>  


<!-- the old dataTable:works well --> 
<h:form> 
<rich:dataTable var="panne" value="#{naturePanneController.naturePanne}"> 
<h:column headerClass="headerleftfacet"> 
<f:facet name="header"> 
<h:outputText value="#{msg.nom_panne}" /> 
</f:facet> 
<h:outputText value="#{panne.lib_naturepanne}"/> 
</h:column> 
</rich:dataTable> 
</h:form> 

Субъект NaturePanne.java

@Entity 
@Name("naturePanne") 
@Scope(ScopeType.EVENT) 
@AutoCreate 
@Table(name = "naturepanne") 
public class NaturePanne implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private Integer id_naturepanne; 
private String lib_naturepanne; 

//Getters/Setters 
+0

Если список, возвращенный из базы данных, пуст, это чистая проблема с базой данных/jpa, а не java-se jsf или datatable – Kukeltje

+0

Спасибо за ответ, есть ли у вас какие-либо предложения – marwa

+0

@Kukeltje На ваш взгляд, почему мой новый dataTable пуст, несмотря на то, что я скопировал один и тот же компонент? – marwa

ответ

0

Проверьте EntityManager конфигурация , Включите show sql config в настройках EMF, как показано ниже.

В зависимости от того, что реализация используется .. для спящего режима:
<property name = "hibernate.show_sql" value = "true" /> для JPA: <property name="${filename}" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE"/>

Таким образом, вы можете увидеть SQL он пытается выполнить, вы можете протестировать SQL в изоляции, чтобы увидеть если у вас есть результаты из хранилища данных.

+0

Это скорее комментарий, чем ответ. – Kukeltje

+0

На ваш взгляд, почему мой новый dataTable пуст, несмотря на то, что я скопировал один и тот же компонент? – marwa