3

私は Java と icefaces を使用しています。毎回異なる数の列を持つテーブルを作成する必要があります。

これまでのところ、私が見つけた最良の例はicefacesのWebサイトでした

列数を動的にしようとしましたが、html ページでセル値を取得する方法がわかりません。これが私のコードです:

私の豆:

public class DynamicColumnsBean implements Serializable {

int randomRows ;
int randomCol ;

List<Task> data;   // rows data
List<ColumnModel> columns ;


public DynamicColumnsBean() {
    super();
    Random rn = new Random();
    randomRows = rn.nextInt() % 40;
    randomCol = rn.nextInt() % 30;

    if(randomRows==0)   randomRows=10;
    if(randomCol==0)    randomCol=7;
    if(randomRows<0)    randomRows*=-1;
    if(randomCol<0)     randomCol*=-1;

     columns = new ArrayList<ColumnModel>();
     for (int i=0 ; i< randomCol ; i++ )
    {
         columns.add(new ColumnModel(i, "ID "+ i +" "));
    }

    data = new ArrayList<Task>() ; //row objects

    for (int i=0 ; i< randomRows ; i++ )
    {
        List<String> obj = new ArrayList<String>() ;
        for (int j=0 ; j< randomCol ; j++ )
        {
            obj.add("row "+i +" col "+j);
        }
        Task temp = new Task(obj);
        data.add(temp);
    }

}



    public List<Task> getData() 
    {           return data;        }
    public void setData(ArrayList<Task> data) 
    {           this.data = data;       }
    public List<ColumnModel> getColumns() {
        return columns;     }
    public void setColumns(ArrayList<ColumnModel> columns) {
        this.columns = columns;     }
}


public class Task {

List<String> obj ;


 public Task() {
        super();

    } 

public Task(List<String> obj) {
    super();
    obj = new ArrayList<String>();
    this.obj = obj;
}

public List<String> getObj() {
    return obj; }

public void setObj(List<String> obj) {
    this.obj = obj; }
}

public class ColumnModel {
int value; // represents sortBy / filterBy as one field
String headerText;

public ColumnModel(int i, String headerText) {
    this.value = i;
    this.headerText = headerText;
}

public int getValue() {
    return value;    }
public void setValue(int value) {
    this.value = value;    }
public String getHeaderText() {
    return headerText;    }
public void setHeaderText(String headerText) {
    this.headerText = headerText;    }
}
<ace:dataTable value="#{dynBean2.data}" var="row" scrollable="true"
              height="200"     paginator="true"   rows="5" >
            <c:forEach items="#{dynBean2.columns}" var="col">
                <ace:column headerText="#{col.headerText}" style="width: 40px" >

                    <ice:outputText value=" #{row['obj'[col.value]]}"></ice:outputText>

                </ace:column>
            </c:forEach>
        </ace:dataTable>

私の問題は次のとおりです。

ice:outputText value=" #{row['obj'[col.value]]}"

値を次のようにする必要があります: インデックス i のデータを取得します --> インデックス [col.value] の obj 内の値を取得します。

4

1 に答える 1

0

あなたはvarStatusで試すことができます:

<c:forEach items="#{dynBean2.columns}" var="col" varStatus="colStatus">
  <ace:column headerText="#{col.headerText}" style="width: 40px" >
    <ice:outputText value=" #{row.obj[colStatus.index]}"></ice:outputText>
  </ace:column>
</c:forEach>
于 2013-03-14T09:00:44.963 に答える