DAO:
public class TableDAO{
/*******获取动态表中的内容******/
public List getRecordList(String tablename)
{
SQLQuery query = session.createSQLQuery("select * from "+tablename);
List list = query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)
.list();//把查询结果转换成map类型
return list;
}
/*******获取column的表头信息**********/
public List getRecordHeaderList()
{
}
}
Backing Bean:
public class TableBean{
private DataModel recordModel;
private DataModel headerModel;
private int labelIndex = 0;
public DataModel getHeaderModel()
{
if(headerModel == null)
{
headerModel =new ListDataModel();
headerModel.setWrappedData(getColumnHeaderList());
}
return headerModel;
}
public DataModel getRecordModel() {
if(recordModel== null)
{
recordModel=new ListDataModel();
recordModel.setWrappedData(getRecordList());
}
return recordModel;
}
public String getColumnValue()
{
if(recordModel == null) recordModel = getRecordModel();
if(recordModel.isRowAvailable())
{
Map map = (Map)recordModel.getRowData();
List list = getColumnHeaderList();
String key = list.get(labelIndex)).toString();
Object o = map.get(key);
if(o == null) o = "";
labelIndex++;
if(labelIndex == map.size()) labelIndex = 0;
return o.toString();
}
return null;
}
}
页面:
<t:dataTable id="recorddata"
var="record"
value="#{tableBean.recordModel}"
preserveDataModel="false"
rows="100"
>
<t:columns value="#{tableBean.headerModel}" var="columnHeader">
<f:facet name="header">
<h:outputText value="#{columnHeader.cname}" />
</f:facet>
<h:outputText value="#{tableBean.columnValue}" />
</t:columns>
</t:dataTable>
这个方法主要是利用了Myfaces的<t:columns>组件来实现动态表格的生成。
我的开发环境是:hibernate-3.2, myfaces-1.1.5
联系客服