2011-04-06 7 views
2

空のボディを持つGETリクエストを.jsonファイル拡張子(例:http://localhost:8080/myapp/mycontroller/myaction.json)を使用してgrails 1.3.7コントローラに送信すると、 grailsが空のボディをJSONにパースしようとしているようです。 .json拡張子を持たない同じアクションに同じリクエストを送信すると、エラーは発生しません。空の本体でgrailsコントローラアクションを取得するときにJsonの解析エラーが発生する

どうすればこのエラーを取り除くことができますか?そして、あなたが存在しないアクションにデータを送信しているわけではない場合

def myaction.json() 

答えて

0

は、あなたがこのようになりますあなたのコントローラ内のアクションを持っていますか。 あなたはその後、そのことについてはgrails.convertersを使用するJSONを解析しようとしている場合:

import grails.converters 

def jsonData = JSON.parse(params) 

もこのtutoが役立つかもしれない:これで http://www.ibm.com/developerworks/java/library/j-grails11188/index.html

+0

jsonアクションはありません。ここで "json"はGrailsにJSON応答が必要なことを伝えるコンテンツネゴシエーション拡張として使われます。問題は、要求の解析が開始され、リクエストボディが空であるために失敗するということです。これは、GETのために正常です。実際、Grailsのバグであることが判明したので、そのためのJIRAの問題を作成しました:http://jira.grails.org/browse/GRAILS-7423 – Sebastien

1

私の最高の刺しは、URLマッピングに別の条項を持つことですそして、GETtish要求に対して、parseRequestfalseに設定されていることを確認してすなわち

static mappings = { 
    "/$controller/show/$id?"(parseRequest:false,action:'show'){ 
     constraints { 
      // apply constraints here 
     } 
    } 

    "/$controller/$action?/$id?"(parseRequest:true){ 
     constraints { 
      // apply constraints here 
     } 
    } 

(はい、これはまだ2.0.0 RC1で起こる)

関連する問題