我想生成一个表列表.每月1张桌子.每月每天有1列.这是我正在使用的JSF部分.
<ui:repeat value="#{worklogService.months}" var="monthnum">
<p:dataTable value="#{worklogService.getTableForMonth(monthnum)}" var="tabrow">
<p:column headerText="Name">
<h:outputLabel value="#{tabrow.get(0)}"></h:outputLabel>
</p:column>
<ui:repeat value="#{worklogService.getDaysOfMonth(monthnum)}" var="daynum">
<p:column headerText="#{daynum}">
<h:outputText value="#{tabrow.get(daynum)}"></h:outputText>
</p:column>
</ui:repeat>
</p:dataTable>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
#{worklogService.months}回报List<Integer>.每月一个号码.
#{worklogService.getTableForMonth(monthnum)}回报List<List<String>>.
每个表的第一列是相同的.我想根据月份生成所有其他列.结果是12个表只有1列(第一个).这可能是什么问题?以及如何解决?
Bal*_*usC 13
因为此构造失败,UIData类似的组件<p:dataTable>只支持UIColumn孩子们可以在的情况下,<p:dataTable>只能为<p:column>或<p:columns>.
在您的特定情况下,您有两个选择:
使用<p:columns>而不是<ui:repeat><p:column>:
<p:columns value="#{worklogService.getDaysOfMonth(monthnum)}" var="daynum" headerText="#{daynum}">
#{tabrow.get(daynum)}
</p:columns>
Run Code Online (Sandbox Code Playgroud)使用<c:forEach>而不是<ui:repeat>(在此解释):
<c:forEach items="#{worklogService.getDaysOfMonth(monthnum)}" var="daynum">
<p:column headerText="#{daynum}">
<h:outputText value="#{tabrow.get(daynum)}"></h:outputText>
</p:column>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)