2010-11-18 12 views
1

これは、これが1-2-3と数えるほど簡単だと思っていたので、これは本当に嫌いです。私は昨日から今日調査しましたが、私は解決策を見つけませんでした。JQuery JQGrid:Spring MVC 3からJSONデータをロードする方法@RequestBody

ここで私がしたいことがあります。 Spring MVC 3コントローラからJSONデータを取得し、そのデータをJQGridに表示します。セットアップするには

はJSONデータを送信するために私のコントローラは、私がこの記事Ajax Simplifications in Spring 3.0

JSONリクエストを処理し、この要求マッピングからのアドバイスに従っ:私はだから

@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(); 
} 

このマッピングは動作しますFirefoxとRESTClientからJSONデータを取得することができます。私は、任意のは、このデータを取得するためにFirefoxやRESTClient中=アプリケーション/ JSONヘッダを受け入れる指定する必要はありませんでした

[{"username":"johnsmith","userId":1,"firstName":"John","lastName":"Smith","id":"1"},{"username":"stackoverflow","userId":2,"firstName":"Stack","lastName":"Overflow","id":"2"}] 

:ここではサンプルJSONデータの出力は、(私が機密データを削除する必要がありました)です。私はちょうど完全なURLを入力してください:http://localhost/myapp/users

Spring MVC 3のマッピングで私は特別な設定やXML設定をしませんでした。(記事とその結果に基づいています)私JSON。ここで

は私のJSPページ上で宣言として私JqGridです:

Javascriptを:JSPで宣言されているよう

<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> 

は、ここに私のCSS要素です:

<table id="list2"></table> 
<div id="pager2"></div> 

私はFirefoxのエラーコンソールを実行しました。エラーは見つかりませんでした。私はFirebugを走らせた。私はエラーも見られませんでした。

JqGridは正しい列名でロードされますが、空です。私は単純な配列データを使って別のJSPページに別のJqGridをセットアップし、データをロードすることができます。任意のアイデアやソリューションですか?

Spring MVC 3 JSON JqGrid統合の実例を見つけるのは本当に難しいです。

答えて

2

JSONを受け入れるには、jsonreader(details here)を定義するか、jqgridが期待するデフォルトに適合するように出力を設定する必要があります。あなたが期待どおりに正確に構造化しなかった場合、jqGridは自動的に失敗します。迅速な対応のための

{"page":1,"total":1,"records":1,"rows":[{"id":1,"cell":["johnsmith",1,"John","Smith",1]}]} 
+0

ありがとう:

では、オブジェクトは次のようになりますので、あなたのJSONを再構築したいと思うjsonreaderデフォルトでこの作業を行います。私は今、そのリンクを読むつもりです。うまくいけばそれは私が探しているものを持っています:) – chris

+0

問題はありません。私はちょうどあなたにデフォルトのjsonreaderでそれを行う方法の例を与えるように更新しました。うまくいけば、そこにあなたの残りの部分を得るでしょう。 –

+0

私は今それを見る。 JqG​​ridは正確なJSON形式を期待しています(jsonReaderを使ってマッピングする方法を指定できます)。私は今これが私にとって必要なものだと思います。 – chris

関連する問題