2011-09-20 4 views
2

GETリクエストが発生したときにオブジェクトをJSONにマーシャリングできるSpring RESTアプリケーションがあります。しかし、私はPOSTメソッドのために何をすべきですか?私はJSONオブジェクトを送信しますが、それをJavaオブジェクトにアンマーシャリングすることはできません。ここに私のコントローラのメソッドです:JSONオブジェクトをJavaクラスにアンマーシャリングする方法は?

@RequestMapping(value = "/user", method = RequestMethod.POST) 
public void createUser(HttpServletResponse response, @RequestBody User user) { 
    ... 
    response.setStatus(HttpServletResponse.SC_OK); 
} 

私はそのように私のJSONを送信:

 var userName = $('#userName').val(); 
     var password = $('#password').val(); 
     var mail = $('#mail').val(); 
     var admin = $("#admin").is(':checked'); 
     var user = {userName: userName, password: password, mail: mail, admin:admin}; 
     $.ajax({ 
      async : false, 
      type: 'POST', 
      contentType: 'application/json', 
      url: '/sfd/user', 
      data: user, 
      dataType: 'json', 
      success: function(data) { 
       ... 
      }, 
      error: function(data) { 
       ... 
      } 
     }); 

はPS:ここではhttp://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/それは言う:

検証がある場合エラーの場合は、エラーメッセージ でHTTP 400が返されます。そうでない場合は、HTTP 200が返されます。

私は400 Bad Request Errorを持っています。たぶん問題はそれに関連しているのでしょうか?

PS2:すべての要素を設定した後にUserオブジェクトを送信する必要がありますか?私はUserオブジェクトにいくつかの他の属性、つまりアドレスがあるが、クライアントからそれを設定して送信しないことを意味します。

PS3: AbstractHandlerExceptionResolverのresolveExceptionメソッドをデバッグすると、そのエラーが表示されます。 'u'は未定義の文字です(私は 'u'はJSON => userNameの最初の文字の最初のキーです)。

+0

ので、あなたのアプリケーションのコンテキストでこれを設定しようとします代わりに何が起こるのですか? – Bozho

+0

@Bozho、この質問はそれに関連していますhttp://stackoverflow.com/questions/7481055/sending-json-data-to-server-errorそれは400の悪い要求エラーを与える – kamaci

+0

あなたはそれのための提案がありますか? – kamaci

答えて

2

あなたはXMLで以下の設定が必要です。

<context:annotation-config/> 

をして、ジャクソンジャーは、あなたのクラスパスにあることを確認する:

私のプロジェクトで、私は春の豆として設定することを好みます。

jsonデータをオブジェクトに逆シリアル化します。

それをここにそれについての詳細を読むことができます:@RequestMappingセットヘッダで

http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/

+0

私はまだ400 Bad Request Errorを持っています。私の質問はここに関連しています:http://stackoverflow.com/questions/7481055/sending-json-data-to-server-error – kamaci

0

をアプリケーション/ JSONを受け入れ、[

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1"> 
<property name="mediaTypes"> 
    <map> 
     <entry key="json" value="application/json" /> 
    </map> 
</property> 

<property name="defaultViews"> 
    <list> 
     <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> 
    </list> 
</property> 
</bean> 
+0

これはp:order = "1"でエラーを出します。 – kamaci

+0

springコンテキストのbeans要素の名前空間宣言にxmlns:p = "http://www.springframework.org/schema/p"を配置する – geez

関連する問題