как передать java beans на страницу jsp для отображения jqQrid с помощью json?

мы пытаемся использовать 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. В нашем текущем (старом) способе мы перебираем вектор, подключаем 5 полей в каждом bean-компоненте и составляем HTML-таблицу.

теперь мы хотим использовать json, и я не могу понять, как создать действительный json (объект? массив?) для перехода в сетку.

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

Кстати, у ContactBean есть много других элементов данных, но мы отображаем только 5 полей.

может кто-нибудь дать мне несколько советов для начала? Я искал несколько дней и чувствую, что никуда не денусь.


person Community    schedule 17.09.2009    source источник


Ответы (2)


Вы смотрели на класс JSONWriter с json.org?

Цитата из документации API:

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

который пишет

 {"JSON":"Hello, World!"}
person Chris Harcourt    schedule 17.09.2009

Тебе надо:

  1. Настройте свой экземпляр jqGrid на ожидание данных JSON
  2. У вас есть что-то (сервлет?) На сервере, которое будет обрабатывать запрос JSON. Вы, конечно, можете выводить данные сетки в виде JSON в том же JSP, который отображает jqGrid, но это в значительной степени нарушит цель (особенно для больших объемов данных, если задействована разбивка на страницы).
  3. Используйте библиотеку JSON, например json-lib, чтобы преобразовать ваши bean-компоненты в JSON. Мне лично нравится XStream, но доступно множество различных реализаций.
person ChssPly76    schedule 17.09.2009