0

我想使用 JSF2 在 xhtml 页面上的表格中显示二维浮点数组,但我不知道该怎么做。我试图在谷歌中找到答案,但我找不到。所有示例都显示类对象,我无法使其与表格一起使用。

位置是:我有一些大小的数组 - 数组的大小取决于输入的数据:float [][] variables = new float[size1][size2]

用户输入数据并按下按钮后,在托管 bean 中调用一个方法。计算开始,表格中填满了数据。

请告诉我如何显示数组。

4

1 回答 1

0

为此,您可以使用c:forEach标签动态地构建一个h:panelGrid. 只需保存size2,即作为属性的列号,并将所有输入的数字存储在一个 normaljava.util.List中。然后将该大小设置为h:panelGrid columns属性,组件将为您拆分行。您还可以为c:forEach标签内的内容设置样式,为其设置边框以使其具有表格行为。

<h:form>
    <h:panelGrid columns="#{bean.numberCount}">
        <c:forEach var="num" items="#{bean.numberList}">
            #{number}
        </c:forEach>
    </h:panelGrid>
</h:form>

已编辑

如果您想保持原始结构但在 List 中,您可以创建一个List<List<Float>>. 这意味着由包含浮动对象的列表组成的列表。与二维数组相同。

private List<List<Float>> _Matrix;

public List<List<Float>> get_Matrix() {
    return this._Matrix;
}

/**
 * Constructor for BackingBean.
 */
public BackingBean() {
    this._Matrix = new ArrayList<List<Float>>();
    this._Matrix.add(new ArrayList<Float>());
    this._Matrix.add(new ArrayList<Float>());
    this._Matrix.get(0).add(1.0f);
    this._Matrix.get(0).add(2.0f);
    this._Matrix.get(0).add(3.0f);
    this._Matrix.get(1).add(1.0f);
    this._Matrix.get(1).add(2.0f);
    this._Matrix.get(1).add(3.0f);
}

在上面的代码中,我正在构造一个等效于具有 2 行和 values 的二维数组1.02.0并且3.0在每一行上。您可以使用此代码在视图上对其进行迭代:

<h:panelGrid columns="#{backingBean._ColumnNumber}">
        <c:forEach var="row" items="#{backingBean._Matrix}">

            <c:forEach var="value" items="#{row}">

                #{value}
                    </c:forEach>
        </c:forEach>
    </h:panelGrid>

#{backingBean._ColumnNumber}List 的第一个数组的长度在哪里(假设它们都具有相同的长度)。

祝你好运。

于 2013-01-29T21:39:48.030 回答