JQGrid JQuery: das laden von JSON-Daten aus Spring MVC 3 @RequestBody
Ich HASSE es, das zu Fragen, weil ich dachte, das soll so einfach wie das zählen 1-2-3. Ich habe recherchiert seit gestern und heute, aber ich habe keine Lösung gefunden.
Hier ist, was ich tun möchte. Abrufen von JSON-Daten aus meiner Spring MVC 3 Controller und Anzeige, dass Daten auf meiner JQGrid.
Zu meine setup-Controller zu senden, die JSON-Daten, folgte ich dem Rat aus diesem Artikel Ajax Vereinfachungen in Spring 3.0
Dieser Antrag mapping verarbeitet die JSON Anfrage:
@RequestMapping(value = "/users", method = RequestMethod.GET)
public @ResponseBody List<UserDTO>viewUsersAsJSON(HttpServletRequest request, HttpServletResponse response, ModelMap model) {
logger.debug("Retrieving all users as JSON");
return userRoleService.getAll();
}
Diese Zuordnung funktioniert, weil ich bin in der Lage, zum abrufen von JSON-Daten aus Firefox und RESTClient. Hier ist die Beispiel-JSON-Daten-Ausgabe (ich hatte zu entfernen, die sensible Daten):
[{"username":"johnsmith","userId":1,"firstName":"John","lastName":"Smith","id":"1"},{"username":"stackoverflow","userId":2,"firstName":"Stack","lastName":"Overflow","id":"2"}]
Ich habe nicht die Angabe Accept=application/json Header oder Firefox RESTClient, um diese Daten abrufen. Ich nur geben Sie die vollständige URL ie: http://localhost/myapp/users
Ich habe es nicht eine spezielle Konfiguration oder XML-config auf meinem Spring MVC 3 Zuordnung, weil ich zu erwarten (auf der Basis der Artikel und die Ergebnisse, die ich bekam), dass es einfach funktioniert und gibt mir JSON.
Hier mein JqGrid wie erklärt, auf meiner JSP-Seite:
Javascript:
<script type="text/javascript">
jq(function() {
jq("#list2").jqGrid({
url:'/myapp/users',
datatype: 'json',
mtype: 'GET',
colNames:['Id','Username', 'User Id', 'First Name', 'Last Name'],
colModel:[
{name:'id',index:'id', width:55},
{name:'username',index:'username', width:90},
{name:'userId',index:'userId', width:90},
{name:'firstName',index:'firstName', width:100},
{name:'lastName',index:'lastName', width:80, align:"right"}
],
rowNum:10,
rowList:[10,20,30],
pager: '#pager2',
sortname: 'id',
viewrecords: true,
sortorder: "desc",
caption:"Users Table"
});
jq("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false});
});
</script>
Hier ist meine CSS-Elemente wie erklärt, in der JSP:
<table id="list2"></table>
<div id="pager2"></div>
Lief ich Firefox Fehler-Konsole. Keine Fehler gefunden. Ich lief Firebug. Ich sehe keine Fehler.
Den JqGrid lädt mit der richtigen Spaltennamen, aber es ist leer! Ich setup eine andere JqGrid auf eine andere JSP-Seite mit einem einfachen array-Daten und es ist in der Lage, die Daten zu laden. Irgendwelche Ideen oder Lösungen?
Es ist wirklich schwer zu finden, jede funktionierende Beispiele von Spring MVC 3 JSON integration JqGrid.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben jqGrid akzeptieren, dass JSON, müssen Sie entweder definieren Sie einen jsonreader (details hier) oder die Ausgabe, dass es konform zu den Vorgaben, die jqgrid erwartet. Wenn Sie nicht-Struktur ist es genau wie erwartet, jqGrid wird im hintergrund fehl.
Diese Arbeit zu machen mit der Standard-jsonreader Sie wollen restrukturieren, um Ihre JSON-also das Objekt sieht wie folgt aus: