【问题标题】:How to display data from database in dataTable?如何在dataTable中显示数据库中的数据?
【发布时间】:2017-01-27 18:32:16
【问题描述】:

在我的 java web 项目中,我想测试如何在 dataTable 中显示列表,我有一个示例,其中显示了该列表。我尝试按照示例进行操作,因此创建了一个新的 xhtml 页面,在其中复制了示例的 dataTable,添加了一个新的 dataTable,并创建了一个名为 StatPanne 的新 bean。示例的 bean 是 NaturePanneController。 问题是新的数据表是空的。我知道新bean返回的列表是空的,但我不知道为什么,请你帮帮我。谢谢。

@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);
    }}}

我的新 bean 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 包含两个数据表

<!-- 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

【问题讨论】:

  • 如果从数据库返回的列表是空的,那是纯database/jpa的问题,不是java-se jsf或者datatable
  • 感谢回复,有什么建议
  • @Kukeltje 在你看来,为什么我的新数据表是空的,尽管我复制了同一个 bean?
  • 你想要什么样的建议?我建议“调试”

标签: java jsf datatable


【解决方案1】:

检查 EntityManager 配置。 在 EMF 设置中启用 show sql config,如下所示。

取决于您使用的实现.. 休眠:
&lt;property name = "hibernate.show_sql" value = "true" /&gt; 对于 jpa : &lt;property name="${filename}" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE"/&gt;

这样,你可以看到它尝试执行的 SQL,你可以单独测试这个 SQL,看看你是否真的有来自数据存储的结果。

【讨论】:

  • 这更像是一个评论而不是一个答案。
  • 在你看来,为什么我的新数据表是空的,尽管我复制了同一个 bean?
猜你喜欢
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多