1

スプリングコントローラーに手動で渡したときに、リクエスト入力ストリームからjsonオブジェクトを読み取る必要がある理由がよくわからないので、誰かが私に質問に答えることができるかどうか疑問に思いました。

通常、私は json-rpc フレームワークを使用しており、それがすべてを処理してくれるので、これまで手動で行う必要はありませんでした。すべてが正常に機能しますが、フォームを投稿したときのようにリクエストに何もなかった理由がわかりません。代わりに、このコードを使用してオブジェクトをジャクソンにマップする必要がありました。

BufferedInputStream bis = new BufferedInputStream(request.getInputStream());
ChartParameters chartParameters = mapper.readValue(bis, ChartParameters.class);

最初にやらなければならないと思っていた文字列として値を取得するのではなく、入力ストリームを読み取ってこれをジャクソンに渡す必要がある理由を理解したいと思います。

役立つ回答をお寄せいただきありがとうございます。

4

2 に答える 2

1

最近の Spring バージョンを使用している場合は、次の手順で作業を開始できます。

@ResponseBody
public Chart handleChartJsonRPC(@RequestBody ChartParameters chartParameters) throws Exception {
    return jsonService.getBarChart(chartParameters);
}

これは (明らかに)オブジェクトをjsonService返すことを前提としています。Chartオブジェクトは、ブラウザに送り返す前に JSON にシリアル化する必要があります。

@ user2054820 で説明されているように、JSON との間でオブジェクトを (逆) シリアル化する MessageConverter があることを確認してください。

于 2013-07-11T07:38:00.067 に答える
1

JSON を文字列として投稿し、次のように構成できます。

    <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>
于 2013-07-11T07:23:09.520 に答える