2016-05-31 20 views
0

ポストリクエストでプロトコルバッファオブジェクトを送信していますが、生成されたクラス(プロトコルバッファ)にコンストラクタが空でないため、反対側でオブジェクトを取得できません。したがって、@ModelAttributeを構築することはできません。プロトコルバッファ - @ModelAttribute

@RequestMapping(value = "/path", method = RequestMethod.POST) 
public string saveInvoice(@ModelAttribute(value = "person") ModelProtos.Person person) { 
    ... 
} 

アドバイスはありますか?

通知プロトコルバッファオブジェクトを返すことができます。

+0

protobufは、バイナリデータとの間でシリアル化されることを意味します。バイナリデータを生成するカスタムの 'HttpMessageConverter'を持っていますか?(' 'ProtobufHttpMessageConverter')(http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/protobuf/ ProtobufHttpMessageConverter.html)))またはそれらをどのように使用していますか? – zapl

+0

はい、私はProtobufHttpMessageConverterを使用しています。 spring-bootの設定でbeanとして登録されています – hybaken

+2

'ModelAttribute'の代わりに' RequestBody'を使うと、それらは全く異なります。 –

答えて

1

身体を変換するには@RequestBodyを使用する必要があります。これはHttpMessageConverterを使用するメカニズムでもあります。

@ModelAttributeは、通常のフォームまたはリクエストパラメータを送信し、それをオブジェクトにバインドする場合です。

これについてはblog entryもありますが、それは自動設定を使用せず、むしろ "手動"を使用していますが、それでも参考になります。

関連する問題