Java 如何在dataTable中显示数据库中的数据?
在我的JavaWeb项目中,我想测试如何在dataTable中显示列表,我有一个示例,其中显示了该列表。我试着遵循这个示例,因此我创建了一个新的xhtml页面,在其中复制了示例的dataTable,添加了一个新dataTable,并创建了一个名为StatPanne的新bean。示例的bean是NaturePanneController。 问题是新的数据表是空的。我知道新bean返回的列表是空的,但我不知道为什么,请你帮我。谢谢Java 如何在dataTable中显示数据库中的数据?,java,jsf,datatable,Java,Jsf,Datatable,在我的JavaWeb项目中,我想测试如何在dataTable中显示列表,我有一个示例,其中显示了该列表。我试着遵循这个示例,因此我创建了一个新的xhtml页面,在其中复制了示例的dataTable,添加了一个新dataTable,并创建了一个名为StatPanne的新bean。示例的bean是NaturePanneController。 问题是新的数据表是空的。我知道新bean返回的列表是空的,但我不知道为什么,请你帮我。谢谢 @Name("naturePanneController") @Sc
@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);
}}}
检查EntityManager配置。 在EMF设置中启用ShowSQL配置,如下所示 取决于您使用的实现。。 对于休眠:
对于jpa:
通过这种方式,您可以看到它试图执行的SQL,您可以单独测试此SQL,以查看是否确实有来自数据存储的结果。如果从数据库返回的列表为空,则这是纯数据库/jpa问题,而不是java se jsf或DataTable。谢谢您的回复,您有什么问题吗suggestion@Kukeltje在你看来,,为什么我的新数据表是空的,尽管我复制了相同的bean?你想要什么样的建议?我建议“调试”这更多的是一个注释而不是一个答案。在你看来,为什么我的新数据表是空的,尽管我复制了相同的bean?
@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);}}}
<!-- 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>
@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