跨行的列数不同的JSF表

时间:2014-06-24 02:31:29

标签: java jsf jsf-2

vanilla JSF 2.0是否支持跨不同行的不同列数的数据表?

我的Java bean中有一个二维数组,在某些行中只有一列包含数据。对于那些我希望它们显示为合并的行。即列之间没有边框,数据能够使用相邻列的宽度进行显示。

没有额外的JSF框架,这样做是否合理?

1 个答案:

答案 0 :(得分:2)

你可以使用vanilla HTML表而不是JSF表来实现。只需为矩阵实现双重迭代。假设您能够在您的环境中使用EL 2.2表达式:

@ManagedBean
@RequestScoped
public class ArrayBean {

    private Integer[][] array = { { 1, 2, 3 }, { 1 } };

    public Integer[][] getArray() {
        return array;
    }

}
<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:fn="http://java.sun.com/jsp/jstl/functions">
<h:head />
<h:body>
    <table border="1">
        <ui:repeat var="row" value="#{arrayBean.array}">
            <tr>
                <ui:repeat var="column" value="#{row}">
                    <td colspan="#{fn:length(arrayBean.array) / fn:length(row)}"
                        align="center">#{column}</td>
                </ui:repeat>
            </tr>
        </ui:repeat>
    </table>
</h:body>
</html>

此解决方案未考虑您可能decimal colspans,因此您应计算列号的最小公分母。但是,这超出了你的问题的范围。