构建具有不同列数的html表
Posted
技术标签:
【中文标题】构建具有不同列数的html表【英文标题】:Building html table with varying number of columns 【发布时间】:2013-03-02 11:36:46 【问题描述】:我正在使用 Java 和 icefaces,我需要构建一个每次都有不同列数的表。
到目前为止,我发现的最好的例子是 the icefaces website
我试图让列数是动态的,但我不知道如何获取 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"
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 中的值。
【问题讨论】:
【参考方案1】:你可以试试 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>
【讨论】:
以上是关于构建具有不同列数的html表的主要内容,如果未能解决你的问题,请参考以下文章