【问题标题】:No data is shown in datatable数据表中没有显示数据
【发布时间】:2012-04-22 11:22:52
【问题描述】:

当我尝试加载页面时,数据表为空。使用<h:dataTable ... /> 数据显示在行中。然而,经过进一步检查,列表实际上是写的......但它似乎直接在数据表的 value 属性中使用了列表的 toString() 。怎么了?

支持豆

@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 命名空间 http://primefaces.org/ui 使用前缀 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>

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    #{question.description} 应该转换为当前迭代的 question 对象 .description 属性中的 String 值,这不是您在输出中看到的吗?如果是这样的话,那就没事了……

    编辑

    在查看您的问题更新后,您似乎还没有将 primefaces jar 添加到您的项目中......

    您是否已将 xmlns:p="http://primefaces.org/ui 添加到您的 xhtml 文件中?

    【讨论】:

    • 您是否在项目类路径中包含了 primefaces jar?您知道您正在使用 CDI 吗?因为您没有将您的问题标记为 cdi 问题,“@Named”和“@Inject”不是 JSG 注释...
    • 如果你想使用 primefaces 库,你必须将它添加到你的项目中,就像你添加 jsf jars 一样
    • 尝试删除/重新添加 primefaces jar 文件,也许刷新你的项目,也许重新打开 eclipse...
    • 你能发布完整的 xhtml 吗?您可能会错过以下属性 xmlns:p="primefaces.org/ui
    • Openfaces 也会发生同样的事情......是的,我会的,我现在改用 Openfaces 并且在那里发生同样的事情,所以我只是将它与那个组件库一起发布
    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多