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」を変更して、たとえば次のように入力すると、コンソールに「何か」が表示されます。変数'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 に答える