Jsp文件<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<%@ taglib prefix="l" uri="http://www.apusic.com/jsf/layout" %>
<%@ taglib prefix="w" uri="http://www.apusic.com/jsf/widget" %>
<%@ taglib prefix="ajax" uri="http://www.apusic.com/jsf/ajax" %>
<%@ taglib prefix="om" uri="http://www.apusic.com/jsf/misc"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<f:view>
<om:useBean value="ReportBean"></om:useBean>
<w:page title="报表一览">
<w:head>
<link href="../../css/main.css" rel="stylesheet" type="text/css">
</w:head>

<h3>仓库一览</h3>
<w:form style="height:95%" transient="true">
<w:dataGrid paged="true" rows="10" id="storageDataGrid" binding="#{ReportBean.storageDataGrid}" 
 var="data" >

</w:dataGrid>
</w:form>

</w:page>
</f:view>
JavaBean文件package com.vms;import java.util.ArrayList;
import java.util.List;
import java.util.Map;import org.operamasks.faces.annotation.Bind;
import org.operamasks.faces.annotation.ComponentAttributes;
import org.operamasks.faces.annotation.ManagedBean;
import org.operamasks.faces.annotation.ManagedBeanScope;
import org.operamasks.faces.component.grid.GridColumn;
import org.operamasks.faces.component.grid.GridColumnModel;
import org.operamasks.faces.component.grid.GridHeader;
import org.operamasks.faces.component.grid.GridHeaderCell;
import org.operamasks.faces.component.grid.GridHeaderModel;
import org.operamasks.faces.component.grid.GridSelectionModel;
import org.operamasks.faces.component.grid.impl.UIDataGrid;
import org.operamasks.faces.component.grid.provider.GridRowDataProvider;
import org.operamasks.faces.component.grid.provider.GridViewProvider;/*
 * 创建日期 Jun 17, 2008
 *
 * TODO 填写文件功能
 */
@ManagedBean(name="ReportBean",scope = ManagedBeanScope.SESSION)
public class ReportBean {
 
    /**
     * 绑定页面的DataGrid组件
     */
    @Bind(id="storageDataGrid", attribute="binding")
    private UIDataGrid storageDataGrid;
    /*
    public List<Storage> getStorages() {
        return storages;
    }
    */
    @Bind(id = "storageDataGrid", attribute = "value")   
    //private List<Storage> storages = getReportDataGridValues();  
    //private List<Storage> storages = initStorage();
    private List<Storage> storages = Storage.samples();  
    
    public UIDataGrid getGrid() {
        return storageDataGrid;
    }
    public void setGrid(UIDataGrid storageDataGrid){
        this.storageDataGrid = storageDataGrid;
    }
    private List<Storage> initStorage(){
        List<Storage> items=new ArrayList<Storage>();
        Storage item = new Storage();
        item.setId("001");
        item.setName("北京海淀1库");
        item.setAddr("海淀区上地环岛东");
        items.add(item);
           
        item = new Storage();
        item.setId("002");
        item.setName("北京昌平1库");
        item.setAddr("昌平区回龙观");
        items.add(item);
        
        item = new Storage();
        item.setId("003");
        item.setName("北京宣武1库");
        item.setAddr("宣武区长椿街");
        items.add(item);
        
        return items;
    }
//
//    /* 数据加载 */
//    @DataModel(id="storageDataGrid")   
    private List<Storage> getReportDataGridValues() {
        List<Storage> items=new ArrayList<Storage>();
        System.out.println("getReportDataGridValues()");
        items.add( new Storage("001","北京海淀1库","海淀区上地环岛东")); 
        items.add( new Storage("002","北京昌平1库","昌平区回龙观")); 
        items.add( new Storage("003","北京宣武1库","宣武区长椿街")); 
       
        System.out.println(items.get(0).getAddr());
        return items;
    }    /*设置Grid视图*/
    @Bind(id = "storageDataGrid", attribute = "viewProvider")   
    private GridViewProvider viewProvider = new GridViewProvider() {   
        //GridViewProvider 是一接口,需要我们实现如下三个方法   
        //getColumnModel 为Grid的数据列模型,   
        public GridColumnModel getColumnModel(Object input) {   
         GridColumnModel model = new GridColumnModel(); 
         
         //新增列,指定id为email   
         GridColumn column = new GridColumn("id");
         //并将该列设置为隐藏列   
         //column.setHidden(true);   
         model.addColumn(column);
         
        //新增列,指定id为name   
         column = new GridColumn("name");   
        //指定宽度为150   
        column.setWidth(150);   
        //可以排序   
         column.setEnableSort(true);   
                        //添加到grid的数据模型    
         model.addColumn(column);   
         //新增列,指定id为addr                 
         column = new GridColumn("addr");   
         model.addColumn(column);   
                           
        //在展示数据的时候,显示行号    
         model.setShowRowNumber(true);   
         return model;   
        }   
        
        public GridHeaderModel getHeaderModel(Object input) {   
         GridHeaderModel model = new GridHeaderModel();   
         GridHeader header = new GridHeader();   
         GridHeaderCell cell;   
         
         
         cell = new GridHeaderCell("仓库ID");   
         header.addCell(cell);
                        
         //新增列的头单元,并命名为"名称"   
         cell = new GridHeaderCell("名称");   
         header.addCell(cell);   
                        //新增列的头单元,并命名为"地址"       
         cell = new GridHeaderCell("地址");   
         header.addCell(cell);   
        
         model.addHeader(header);   
         return model;   
        }   
        
        public GridSelectionModel getSelectionModel(Object input) {
            System.out.println("getSelectionModel_Hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
            return null;   
        }   
    };
    
    //设置行
    @Bind(id = "storageDataGrid", attribute = "rowDataProvider")   
    public GridRowDataProvider rowProvider = new GridRowDataProvider() {   
                //其中 rowData为每行数据,column 为列信息。   
                //通过column.getId可以获得上面定义的列ID   
        
        public Object getLabel(Object rowData, GridColumn column) {
            System.out.println("getLabel_Hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
                        //获取当前列的ID   
            String id = column.getId();   
            System.out.println(id);
            Storage user = (Storage) rowData;   
                        //判断,根据不同的id,展示不同的数据,如果上面的Grid的数据列模型设置了转换,那么会自动调用   
            if ("name".equals(id)) {   
                                //列的id是name,显示用户名   
                return user.getName();   
            } else if ("addr".equals(id)) {   
                                //列的id是email,显示电子邮件   
                return user.getAddr();   
            }   
            return null;   
        }   
    };  
    
}  如果用在后台用 @Datamodel填充数据
@DataModel(id="storageDataGrid")   
    private List<Storage> getReportDataGridValues() {
        List<Storage> items=new ArrayList<Storage>();
        System.out.println("getReportDataGridValues()");
        items.add( new Storage("001","北京海淀1库","海淀区上地环岛东")); 
        items.add( new Storage("002","北京昌平1库","昌平区回龙观")); 
        items.add( new Storage("003","北京宣武1库","宣武区长椿街")); 
       
        System.out.println(items.get(0).getAddr());
        return items;
    }
Datagrid验证时出现空指针错误
望AOM高手指点。