Jsf 数据表中未显示任何数据
当我尝试加载页面时,datatable是空的。使用该选项,数据将显示在行中。然而,在进一步检查之后,列表实际上被写入了……但它似乎直接在datatable的value属性中使用了列表的toString。怎么了 背豆Jsf 数据表中未显示任何数据,jsf,primefaces,Jsf,Primefaces,当我尝试加载页面时,datatable是空的。使用该选项,数据将显示在行中。然而,在进一步检查之后,列表实际上被写入了……但它似乎直接在datatable的value属性中使用了列表的toString。怎么了 背豆 @Named @RequestScoped public class QuestionTableBacking { @Inject private QuestionServiceLocal questionService; public List<Q
@Named
@RequestScoped
public class QuestionTableBacking {
@Inject
private QuestionServiceLocal questionService;
public List<Question> getAllQuestions() {
return questionService.getAllQuestions();
}
}
Facelet文件
<h:form>
<p:dataTable value="#{questionTableBacking.allQuestions}" var="question" >
<p:column>
<h:outputText value="#{question.description}" />
</p:column>
<p:column>
<h:link outcome="report" value="Rapporter" />
</p:column>
</p:dataTable>
</h:form>
这就是我在萤火虫身上看到的
<p:datatable value="[com.mycompany.myapp.domain.Question@7cf9175c, com.mycompany.myapp.domain.Question@456cd91d, com.mycompany.myapp.domain.Question@6d222286,..... var="question">
<p:column>
</p:column>
<p:column><a href="/myapp/report.faces">Report</a>
</p:column>
</p:datatable>
POM文件它们包含在正确的父元素中
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.2</version>
<scope>compile</scope>
</dependency>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
警告:此页调用XML命名空间
使用前缀p声明,但该命名空间不存在标记库
完整文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:o="http://openfaces.org/">
<h:head>
<title>Simple JSF Facelets page</title>
</h:head>
<h:body>
<ui:composition template="templates/masterLayout.xhtml">
<ui:define name="windowTitle">Question</ui:define>
<ui:define name="content">
<div id="page-intro">
<h2>Titile</h2>
<p>Blah blah</p>
</div>
<h:form>
<div class="question-filter-container">
<o:inputTextFilter id="quesiton-filter" styleClass="input-text question-filter" for="question-table"
expression="#{question.description}"
promptText="" />
</div>
<o:dataTable value="#{questionTableBacking.allQuestions}" var="question" rowKey="#{question.id}"
id="question-table" pageSize="25" applyDefaultStyle="false"
cellspacing="0">
<f:facet name="below">
<o:dataTablePaginator id="paginator" pageNumberPrefix="Side" pageCountPreposition="av"
styleClass="question-paginator" />
</f:facet>
<o:column>
<h:outputText value="#{question.description}" />
</o:column>
<o:column bodyClass="question-operations">
<h:link outcome="report" value="Report" />
</o:column>
</o:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
{question.description}应转换为字符串值,该值位于当前迭代的question对象内。description属性,这不是您在输出中看到的吗?如果是这样的话,那么一切都好
编辑
在查看您的问题更新之后,您似乎还没有将primefaces jar添加到您的项目中
您是否添加了xmlns:p=http://primefaces.org/ui 到您的xhtml文件?您是否在项目类路径中包含primefaces jar?您是否知道您正在与CDI合作?因为您还没有将问题标记为cdi问题,@Named和@Inject不是JSG anotations…如果您想使用primefaces库,您必须将它添加到您的项目中,就像添加jsf JARSY以删除/重新添加primefaces jar文件一样,可能刷新您的项目,可能重新打开eclipse…您可以发布完整的xhtml吗?您可能缺少以下属性xmlns:p=Openfaces也会发生同样的事情……是的,我会的,我现在改为Openfaces,同样的事情也会发生在那里,所以我只是将其与该组件库一起发布