【问题标题】:How to display multiple dynamic data table headers?如何显示多个动态数据表头?
【发布时间】:2015-12-25 07:44:21
【问题描述】:

我已经在我的 JSF 页面中成功显示了一个动态数据表。

但是,我需要为月份列添加列标题,如下所示 但它不显示月份列标题

<ul type="none">
    <ui:repeat  value="#{caseStudy.pojoListsForCaseStudyAttendance}"
               var="caseStudyDetails">
        <li>
            <p:dataTable value="#{caseStudyDetails}"
                         var="pojo1"
                         rendered="#{addCampus.campusDetails.campus=='C'}">

                <p:column>
                    <f:facet name="header">
                        <p:outputLabel value="#{pojo1.subjectName}"></p:outputLabel>
                    </f:facet>
                    <p:outputLabel value="#{pojo1.monthValue}"></p:outputLabel>
                </p:column>

                <p:column headerText="#{message['label.msg.student.leave.list.list']}">
                    <p:outputLabel value="#{pojo1.appliedLeavesList}"></p:outputLabel>
                </p:column>
            </p:dataTable>
        </li>
    </ui:repeat>
</ul>

【问题讨论】:

  • 你有什么 ui 设计来满足你的预期输出吗?
  • @EvaMariam 从该屏幕截图中,如果您观察出勤详细信息,您可以看到月份列表列标题没有得到。请查看它
  • 您可以将用于设置值的代码发布到 caseStudy.pojoListsForCaseStudyAttendance 吗??
  • @EvaMariam 这是一个字符串

标签: jsf dynamic jsf-2 primefaces datatable


【解决方案1】:

这里有一个根本性的误解。

<p:dataTable value="#{caseStudyDetails}" var="pojo1">
    <p:column>
        <f:facet name="header">#{pojo1.subjectName}</f:facet>
        #{pojo1.monthValue}
    </p:column>
</p:dataTable>    

您基本上是在尝试将基于行的值显示为列标题。一个表可以有不止一行。只能有 一个 列标题。您的意思是在列标题中显示哪一行?你没有在任何地方指定。表怎么知道呢?在渲染表头时,该表不知道#{pojo1} 到底是什么,更不用说您打算使用哪一个。它仅在渲染表格主体的每一行时可用。在列标题内,只有 #{caseStudyDetails} 或其父级可用。

如果每一行在同一列中具有完全相同的subjectName 值(这表明一个充满重复数据的低效模型,但除此之外),那么您可以像下面这样显式获取第一项:

<p:dataTable value="#{caseStudyDetails}" var="pojo1">
    <p:column>
        <f:facet name="header">#{caseStudyDetails[0].subjectName}</f:facet>
        #{pojo1.monthValue}
    </p:column>
</p:dataTable>    

如果每一行都有不同的subjectName,那么你不应该在列标题的一个地方显示它,而应该在每一行中显示它。像这样的:

<p:dataTable value="#{caseStudyDetails}" var="pojo1">
    <p:column>
        <strong>#{pojo1.subjectName}</strong><br/>
        #{pojo1.monthValue}
    </p:column>
</p:dataTable>    

与具体问题无关,在所有地方滥用&lt;p:outputLabel&gt; 并没有让我觉得您正在使用正确的资源来学习 JSF。仔细阅读Purpose of the h:outputLabel and its "for" attribute。我已经从上面的 sn-ps 中删除了那些。

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 2021-02-13
    • 1970-01-01
    相关资源
    最近更新 更多