打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JSF Hibernate 显示动态生成的表中的内容
先解释一下标题的意思。如果在runtime的时候生成了一张表(见博文:利用oracle的存储过程来建表Hibernate调用存储过程),即动态表,此时无法做 ORM 映射,因此无法创建pojo对象等。如果在这种情况下,仍然想在页面中通过<t:dataTable>标签来显示动态表中的内容,可通过下面的方法:

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
二十八、 TableModel 類別
BootStrap DataTable 应用
JR - 精品文章 - JSF开发实战(二)
hibernate中默认值不起作用的解决办法
hibernate问题
datagridview清空数据
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服