質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

1回答

5185閲覧

Spring JSON形式のリクエスト

ko.7811

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2016/08/06 04:03

###前提・実現したいこと
springの@InitBinderで定義したメソッドで、JSON形式のPOSTリクエストからフィールドの名と値を取得したい。

###該当のソースコード
@InitBinder
public void bindRequest(WebDataBinder binder, WebRequest request) {
// リクエストパラメーターをMapにバインド.
final Map<String, String> multiParams = new HashMap<>();

// multiParams.put("field1", request.getParameter("field1"));


ここの箇所ですが、JSON形式のリクエストの場合、getParameterで取得ができません。

final MutablePropertyValues pvs = new MutablePropertyValues(); pvs.add("multiParams", multiParams); binder.bind(pvs);

###制約
@RequestMappingのメソッドで@RequestBodyを指定すれば、springが自動でバインドしてくれることは知っているのですが、今回の要件では、@RequestBodyでの定義ができないため、@InitBinderにて処理をさせています。

###補足情報(言語/FW/ツール等のバージョンなど)
Spring 4.2.6
java8

色々、ググッたのですが、あまりピンとこず、質問を上げさてもらいました。
他により良い方法等も含め、ご教授をお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2016/08/08 01:40

"@RequestBodyでの定義ができない"、getParameterで取得できない、あたりから推測はできますが、フォーム送信(画面?)の構成や具体的なソースコードがあると明確な回答が得られると思います。
guest

回答1

0

一発でみつかったのですが探し方が悪いですね。 検索ワード by google

  1. 最初の1行のみ取得されるので改行コードは自己対応してね

java

1BufferedReader bufferReaderBody = request.getReader(); 2String body = bufferReaderBody.readLine();

追記

検索ワード by google に検索をかえてみた 

Spring BootでJSONデータを受け付けるWebAPIを作るという記事があったが

投稿2016/08/06 10:37

編集2016/08/08 03:19
asahina_dev

総合スコア610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ko.7811

2016/08/08 03:08

WebRequest は、org.springframework.web.context.requestパッケージのinterfaceクラスを使用しています。当該クラスにgetReader()が提供されていないようです。 WebRequest でなく、HttpServletRequestのgetReader()を使用した場合、実行時にエラーが発生してしまいました。 java.lang.IllegalStateException: getInputStream() has already been called for this request
ko.7811

2016/08/09 12:42

asahina_devさん、ご回答、有難うございます。 確かに取得はできるのですが、BufferedReader または、InputStreamで読込みをしようとするとIllegalStateExceptionが発生してしまいます。
asahina_dev

2016/08/09 13:44

追記の方があたらしかったりする
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問