2011-12-28 12 views
4

JQuery Ajaxを使用してJSONオブジェクトをSpring MVCコントローラに送信できません。これは私のコントローラのメソッドの定義である:JQueryがSpring MVCコントローラにJSONを送信

$.ajax({ 
      dataType: 'json', 
      contentType: "application/json", 
      url: ctx + "/InboxViewTemplate/updateInboxView", 
      data: ({inboxView : {createUser:"dave"}}), 
      success: function(data) { 
       $("#updateInboxView").html(data); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       alert(jqXHR + " : " + textStatus + " : " + errorThrown); 
      } 
      }); 
     } 

が、JSONオブジェクトが渡されていません。

@Controller 
@RequestMapping(value = "InboxViewTemplate") 
public class InboxViewController { 

@ResponseBody 
    @RequestMapping(value = "updateInboxView") 
    public String updateInboxView(HttpServletRequest request, InboxView inboxView) { 
... 
} 

はその後、私は、この要求を起動しようとしています。誰か助けてくれますか?前もって感謝します。

答えて

8

まず、コントローラはInboxViewのどこを探すべきかわかりません。リクエストパラメータですか?パスパラメータ?ボディをリクエストしますか?

第2に、データを取得するだけでなく、データを更新しているときに、jsonリクエストタイプをPOSTまたはPUTに変更したいと思うかもしれません。

したがって、このような何か:

@Controller 
@RequestMapping(value = "InboxViewTemplate") 
public class InboxViewController { 

@ResponseBody 
    @RequestMapping(value = "updateInboxView", method = RequestMethod.POST) 
    public String updateInboxView(HttpServletRequest request, @RequestBody InboxView inboxView) { 
    ... 
} 

$.ajax({ 
      dataType: 'json', 
      contentType: "application/json", 
      url: ctx + "/InboxViewTemplate/updateInboxView", 
      type: 'POST', 
      data: JSON.stringify({inboxView : {createUser:"dave"}}), //if no JSON is available use the one from https://github.com/douglascrockford/JSON-js 
      success: function(data) { 
       $("#updateInboxView").html(data); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       alert(jqXHR + " : " + textStatus + " : " + errorThrown); 
      } 
      }); 
     } 

が動作するはずです。

ここでは、jsonメッセージコンバータが正しく設定されていると仮定しています。あなたの春のXML設定で他のメッセージコンバータ用

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
<property name="messageConverters"> 
    <list> 
    <ref bean="jacksonMessageConverter"/> 
    </list> 
</property> 
</bean> 

または同等のものを:あなたが持っていることを意味

編集

+0

返信いただきありがとうございます。現在404エラーが発生しています。私もvar obj = jQuery.parseJSON( '{"createUser": "John"}');を試してみました。このオブジェクトをmvcメソッドに渡します。 RequestBodyオブジェクトを認識しないようです。他の設定を試す必要がありますか?または私のAjaxリクエストが間違っていますか?どうもありがとう。 – carlo

+0

@carloまず、コントローラに接続できるかどうかを確認します(curlまたはtelnetを使用)。次に、サーバーログにエラーがないかどうかを確認します。 Springコンテキストでがあるかどうか確認してください。最後にメッセージコンバータが正しく設定されているかどうかを確認してください。私の編集を参照してください。 – soulcheck

+0

私は理解できないと思います。注釈@RequestBodyを削除すると、サービスが呼び出されます。注釈が存在する場合は404エラーが表示されます。どのようにこの状況をデバッグしますか?ありがとうございました。 – carlo

0

404の理由を調べるためにログファイルを見たことがありますか?私はあなたのlibに入れるためにjakson関連のjarファイルが必要だと思っています。

関連する問題