3

我有一个 ArrayList 的 ArrayList - 我以这种方式声明它:

ArrayList<ArrayList<String>> queryResult=new ArrayList<ArrayList<String>>();

然后我向数组中添加一个新元素,如下所示:

for(int i=1;i<colNumber;i++)
{
    queryResult.add(new ArrayList<String>(20));
}

之后,我向数组元素添加一个值:

while(r.next())
{   
    for(int i=0;i<colNumber;i++)
    {
        queryResult.get(i).add(r.getString(i));  
    }     
}

但是当我尝试在 DataTable 标记中使用它时,我什么也看不到:(

<h:dataTable value="#{polaczenieSQL.queryResult}" var="w">
          <h:column>
             <f:facet name="head">typ</f:facet>
             #{w[0]}
          </h:column>

我做错了什么?我应该如何在 JSF 中使用这个数组?

PS这是我的faces.config:

     <managed-property>
        <property-name>queryResult</property-name>
        <property-class>java.util.ArrayList</property-class>
        <list-entries></list-entries>
     </managed-property>

我发现了第一个问题:

r.getString(i)

我添加了一个

System.out.print("something")

循环后,但它不想打印。

当我更改变量“i”并键入例如: 4 我在控制台上看到“某物”。变量 'colNumber' 设置为 5(但我的 sql 表有 7 列,我使用“select * from mytable”,所以我不认为这是一个计数器问题)。

4

1 回答 1

2

如果要打印内部列表中的所有值,您应该执行以下操作:

<h:dataTable value="#{polaczenieSQL.queryResult}" var="w">
      <h:column>
         <f:facet name="head">typ</f:facet>
         #{w[0]} <!--will print the first element in the inner list-->
      </h:column>
      <h:column>
         <f:facet name="head">typ</f:facet>
         #{w[2]} <!--will print the second element in the inner list-->
      </h:column>
      ...
      <h:column>
         <f:facet name="head">typ</f:facet>
         #{w[n]} <!--will print the nth element in the inner list-->
      </h:column>
</h:dataTable>

所以基本上如果你想打印一个内部列表的所有值,你可以使用以下样式:

<ui:repeat value="#{activeUser.listInList}" var="innerList">
    <ui:repeat value="#{innerList}" var="innerListValue">
        #{innerListValue}
    </ui:repeat>
</ui:repeat>

关于异常吞咽,除非您确切知道自己缺少什么,否则您应该在捕获到异常时抛出异常。

于 2012-12-27T22:21:59.797 回答