c:foreach里面的h:datatable来显示二维数组

时间:2013-12-19 18:17:45

标签: arrays jsf java-ee foreach datatable

我正在尝试使用h:datatable标签来显示二维int数组的值。但无法做到。可以帮我解决一下吗?

所以我的支持bean是:

public class MC {
...........

public int[][] getAr() {
    return ar;
}

public int getColCount(){
    return ar[0].length;
}
}

我可以在foreach标签中显示带有代码的数组,引用数组大小​​:

<h:dataTable value="#{mC.ar}" var="dt">
<c:forEach var="fe" begin="0" end="#{mC.colCount-1}">
    <h:column>
        <f:facet name="header">X</f:facet>
            #{dt[fe]}
    </h:column>
</c:forEach> 
</h:dataTable>

但是如果我尝试使用dataTable中的变量,则不打印任何内容:

 <h:dataTable value="#{mC.ar}" var="dt">
 <c:forEach var="fe" items="#{dt}">
    <h:column>
        <f:facet name="header">XX</f:facet>
            #{fe}
    </h:column>
</c:forEach> 
</h:dataTable>

你能帮助我让它发挥作用吗?或者你可以建议一些更好的解决方案来显示数组?谢谢

1 个答案:

答案 0 :(得分:2)

在假设c:forEach在处理dataTable的迭代的同时被处理时,做了很常见的错误。 c:forEach在构建JSF树中处理一次,在此阶段没有定义“dt”变量。 h:dataTable在JSF恢复/渲染阶段定义“dt”变量。如果需要在这个阶段进行迭代,请使用ui:repeat而不是c:forEach。