如何将java bean传递给jsp页面以便jqQrid使用json显示?

时间:2009-09-17 23:22:31

标签: java json jqgrid

我们正在尝试将jqGrid与我们的jsp前端和java后端一起使用。

此页面显示联系人网格:

jQuery(document).ready(function(){ 
  jQuery("#list").jqGrid({
    datatype: 'json',
    url:'gridContactDrv.jsp',
    mtype: 'GET',
    height:300,
    width:600,
    colNames:['First Name','Last Name', 'Company', 'Primary Phone','Email'],
    colModel :[ 
      {name:'firstname', index:'firstname', width:100}, 
      {name:'lastname', index:'lastname', width:100 }, 
      {name:'company', index:'company', width:100}, 
      {name:'phone', index:'phone', width:100 }, 
      {name:'email', index:'email', width:200}
    ],
    pager: '#pager',
    rowNum:10,
    rowList:[10,20,30],
    sortname: 'lastname',
    sortorder: 'desc',
    viewrecords: true
  }); 
}); 

gridContactDrv.jsp调用一个返回ContactBeans Vector的搜索函数。在我们当前(旧)的方式中,我们遍历向量,挂钩每个bean中的5个字段并构造HTML表。

现在我们想要使用json,我无法弄清楚如何构造一个有效的json(obect?array?)来传递给网格。

    Enumeration e = resultVector.elements();
    while (e.hasMoreElements()) 
    {
        ContactBean c = ContactBean((ContactBean)e.nextElement());
        c.getCompany() 
            c.getFirstName() etc etc and what to do?
        }

btw ContactBean有许多其他数据成员,但我们只显示5个字段。

有人可以给我一些指示吗?我已经搜索了几天,感觉没有到达任何地方。

2 个答案:

答案 0 :(得分:0)

你看过JSONWriter class from json.org吗?

引用API docs

 new JSONWriter(myWriter)
     .object()
         .key("JSON")
         .value("Hello, World!")
     .endObject();
     

写的

 {"JSON":"Hello, World!"}

答案 1 :(得分:0)

你需要:

  1. 将您的jqGrid实例配置为expect JSON data
  2. 在后端有什么东西(servlet?)可以处理JSON请求。当然,您可以在呈现jqGrid的同一JSP中将网格数据输出为JSON,但这很大程度上会破坏目的(特别是对于涉及分页的大量数据)。
  3. 使用json-lib等JSON库将您的bean编组为JSON。我个人喜欢XStream但是有很多种可用的实现方式。