2014-10-26 3 views
0

Я новичок в jqgrid и сталкиваюсь с проблемой ниже. Что я хочу сделать, так это указать пользовательские данные заказа в форме. Подробности формы будут отправлены в Jqgrid из submit.Now jqgrid будет передать форму формы контроллеру Spring. Контроллер Spring будет обрабатывать данные и отправлять данные в Jqgrid.Невозможно передать данные формы через jqgrid

1) ViewOrders.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<script type="text/javascript" src="/resources/js/jquery-1.11.1.min.js"></script> 
<script type="text/javascript" src="/resources/js/jquery.jqGrid.min.js"></script> 
<script type="text/javascript" src="/resources/js/jquery-ui.min.js"></script> 

<link type="text/css" rel="stylesheet" 
    href="/resources/css/jquery-ui.min.css" /> 
<link type="text/css" rel="stylesheet" 
    href="/resources/css/ui.jqgrid.css" /> 

<script type="text/javascript"> 
    var jq = jQuery.noConflict(); 
</script> 

<script type="text/javascript"> 
jq(function{ 
    jq("#submit").click(function(){ 
     jq("#grid").jqGrid({ 
      url : '/Online Fund Trading/Overview/Order.spring', 
      datatype : 'json', 
      mtype : 'POST', 
      colNames : [ 'Customer Id', 'Account Id', 'Order Id','Order Date','Order Amount','Order Units','Order Type','Fund Id' ], 
      colModel : [ { 
       name : 'CusId', 
       index : 'CusId', 
       width : 15, 
       editable : false, 
       editoptions : { 
        readonly : true, 
        size : 10 
       }, 
       hidden : true 
      }, { 
       name : 'AccId', 
       index : 'AccId', 
       width : 15, 
       editable : true, 
       editrules : { 
        required : true 
       }, 
       editoptions : { 
        size : 10 
       } 
      }, { 
       name : 'OrdId', 
       index : 'OrdId', 
       width : 15, 
       editable : false, 
       editrules : { 
        required : true 
       }, 
       editoptions : { 
        size : 10 
       } 
      } ,{ 
       name : 'OrdDate', 
       index : 'OrdDate', 
       width : 15, 
       editable : false, 
       editrules : { 
        required : true 
       }, 
       editoptions : { 
        size : 10 
       } 
      },{ 
       name : 'OrdAmount', 
       index : 'OrdAmount', 
       width : 15, 
       editable : false, 
       editrules : { 
        required : true 
       }, 
       editoptions : { 
        size : 10 
       } 
      },{ 
       name : 'OrdUnits', 
       index : 'OrdUnits', 
       width : 15, 
       editable : false, 
       editrules : { 
        required : true 
       }, 
       editoptions : { 
        size : 10 
       } 
      },{ 
       name : 'OrdType', 
       index : 'OrdType', 
       width : 15, 
       editable : false, 
       editrules : { 
        required : true 
       }, 
       editoptions : { 
        size : 10 
       } 
      },{ 
       name : 'FundId', 
       index : 'FundId', 
       width : 15, 
       editable : false, 
       editrules : { 
        required : true 
       }, 
       editoptions : { 
        size : 10 
       } 
      } 

      ], 
      postData : { 
       AccId   : function(){return jq.("#AccId").val();} 
       FromDate  : function(){return jq.("#FromDate").val();} 
       ToDate   : function(){return jq.("#FromDate").val();} 
       TransactionType : function(){return jq.("#FromDate").val();} 
      }, 
      rowNum : 20, 
      rowList : [ 20, 40, 60 ], 
      height : 200, 
      autowidth : true, 
      rownumbers : true, 
      pager : '#pager', 
      sortname : 'CusId', 
      viewrecords : true, 
      sortorder : "asc", 
      caption : "Orders Overview", 
      emptyrecords : "Empty records", 
      loadonce : false, 
      loadComplete : function() { 
      }, 
      jsonReader : { 
       root : "rows", 
       page : "page", 
       total : "total", 
       records : "records", 
       repeatitems : false, 
       cell : "cell", 
       id : "id" 
      } 
     }); 
     jq("#grid").jqGrid('navGrid', '#pager', { 
      edit : false, 
      add : false, 
      del : false, 
      search : true 
     }, {}, {}, {}, { 
      sopt : [ 'eq', 'ne', 'lt', 'gt', 'cn', 'bw', 'ew' ], 
      closeOnEscape : true, 
      multipleSearch : true, 
      closeAfterSearch : true 
     }); 

     jq("#grid").navButtonAdd('#pager', { 
      caption : "Add", 
      buttonicon : "ui-icon-plus", 
      onClickButton : addRow, 
      position : "last", 
      title : "", 
      cursor : "pointer" 
     }); 

     jq("#grid").navButtonAdd('#pager', { 
      caption : "Edit", 
      buttonicon : "ui-icon-pencil", 
      onClickButton : editRow, 
      position : "last", 
      title : "", 
      cursor : "pointer" 
     }); 

     jq("#grid").navButtonAdd('#pager', { 
      caption : "Delete", 
      buttonicon : "ui-icon-trash", 
      onClickButton : deleteRow, 
      position : "last", 
      title : "", 
      cursor : "pointer" 
     }); 

     jq("#btnFilter").click(function() { 
      jq("#grid").jqGrid('searchGrid', { 
       multipleSearch : false, 
       sopt : [ 'eq' ] 
      }); 
     }); 

     // Toolbar Search 
     jq("#grid").jqGrid('filterToolbar', { 
      stringResult : true, 
      searchOnEnter : true, 
      defaultSearch : "cn" 
     }); 


    }); 
}); 


</script> 

</head> 
<body> 
    <form:form id="ViewOrders" commandName="ViewOrders"> 

     <table> 
      <tr> 
       <td>Enter AccId</td> 
       <td><form:input path="AccId" /></td> 
      </tr> 
      <tr> 
       <td>From Date</td> 
       <td><form:input path="FromDate" /></td> 
       <td>To Date</td> 
       <td><form:input path="ToDate" /></td> 
      </tr> 
      <tr> 
       <td>Enter Transaction Type</td> 
       <td><form:input path="TransactionType" /></td> 
      </tr> 
      <tr> 
       <td colspan="4"><input type="submit" id="submit" 
        value="Get Orders"></td> 
      </tr> 
     </table> 
    </form:form> 

<div id="jqgrid"> 
    <table id="grid"></table> 
    <div id="pager"></div> 
</div> 

</body> 

</html> 

2)OverviewController.java

package com.oft.controller; 

import java.util.Iterator; 
import java.util.List; 

import javax.servlet.http.HttpSession; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestBody; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.servlet.ModelAndView; 

import com.oft.service.OverviewService; 
import com.oft.valueobjects.OrderOverviewData; 
import com.oft.valueobjects.OrderOverviewForm; 
import com.oft.valueobjects.OrderOverviewResponse; 

@Controller 
@RequestMapping(value="Overview") 
public class OverviewController 
{ 
    @Autowired 
    OverviewService service; 

    @RequestMapping(value="Order.spring",method=RequestMethod.GET) 
    public ModelAndView getOrderView(ModelMap map,HttpSession session) 
    { 
     ModelAndView modelAndView=new ModelAndView("ViewOrders"); 
     modelAndView.addObject("ViewOrders", new OrderOverviewForm()); 
     return modelAndView; 
    } 

    @RequestMapping(value="Order.spring",method=RequestMethod.POST) 
    public @ResponseBody OrderOverviewResponse getOrderOverview(@RequestBody OrderOverviewForm form,HttpSession session) 
    { 
     System.out.println(form); 

     List<OrderOverviewData> datas=(List<OrderOverviewData>)service.getOrderOverview(form, 1); 

     for (Iterator iterator = datas.iterator(); iterator.hasNext();) { 
      OrderOverviewData orderOverviewData = (OrderOverviewData) iterator.next(); 
      System.out.println(orderOverviewData); 
     } 
     OrderOverviewResponse response=new OrderOverviewResponse(); 

     response.setPage("1"); 
     response.setTotal("5"); 
     response.setRows(datas); 
     response.setRecords(String.valueOf(datas.size())); 

     return response; 
    } 

} 

3)OrderOverviewForm.java

public class OrderOverviewForm 
{ 
    private Date FromDate; 
    private Date ToDate; 
    private String TransactionType; 
    private Integer AccId; 

//getter and setter 
} 

4)OrderOverviewResponse.java

public class OrderOverviewResponse { 

    public String page; 
    public String total; 
    public String records; 
    public List<OrderOverviewData> rows; 
//getter and setter 
} 

Но после представления данных я получаю сообщение, как

The server refused this request because the request entity 
is in a format not supported by the requested resource 
for the requested method. 

Я включил jackson банки, но я не geeting, что я делаю неправильно. Пожалуйста, помогите мне.

+0

ваш вызов ajax ожидает json, также как ваша служба предоставляет данные в формате json (сверху это не так)? – SMA

+0

Вы с этим никуда не ушли, это тоже меня. – nsthethunderbolt

ответ

0

Это предопределенная функция в jqgrid, которая будет связывать данные с сеткой либо с сервера клиента, либо с сервера.

$('#yourGridId')[0].addJSONData(eval("(" + JSON.stringify(yourFormDataObject) + ")")); 
Смежные вопросы